Bash终端输出-高亮显示包含一些文本的行

Bash终端输出-高亮显示包含一些文本的行,bash,shell,Bash,Shell,当我在bash中得到输出时,我得到了我的标准2色屏幕。如果一行包含一些关键文本输出,是否有任何方法可以在默认情况下高亮显示该行 例如,如果包含“失败”一词,则该行为红色 我读过这个 但是,我正在寻找一种比编写包装器脚本更简单的方法,在将来的某个时候,我不可避免地要调试它。要找到一种简单的解决方法,请通过管道将它连接到grep--color以将一些单词变成红色 添加类似于^的回退,以打印不包含任何匹配项的行 grep --color -e 'FAIL' -e '^' <<<$'F

当我在bash中得到输出时,我得到了我的标准2色屏幕。如果一行包含一些关键文本输出,是否有任何方法可以在默认情况下高亮显示该行

例如,如果包含“失败”一词,则该行为红色

我读过这个
但是,我正在寻找一种比编写包装器脚本更简单的方法,在将来的某个时候,我不可避免地要调试它。

要找到一种简单的解决方法,请通过管道将它连接到
grep--color
以将一些单词变成红色

添加类似于
^
的回退,以打印不包含任何匹配项的行

grep --color -e 'FAIL' -e '^' <<<$'Foo\nBar FAIL Baz\nIck'

grep--color-e'FAIL'-e'^'如果您愿意安装BASH脚本和
ack
,则
hhleer
软件包具有有用的默认颜色和简单的界面:

您可以这样使用它来突出显示以
FAIL
开头的行:

h -i 'FAIL.*'
h -i '.*FAIL.*'
或包含
失败

h -i 'FAIL.*'
h -i '.*FAIL.*'
或对于各种常见日志条目:

h -i '.*FAIL.*' '.*PASS.*' '.*WARN.*'

基于tripleee的答案,以下命令将突出显示匹配的红色行,并保留其他行:

 your_command | grep --color -e ".*FAIL.*" -e "^"
如果您更喜欢使用gnu grep的完全反转线:

 your_command | GREP_COLORS='mt=7' grep --color -e ".*FAIL.*" -e "^"

(使用mklement0反馈更新)

这不仅会突出显示一个单词,还会突出显示整行内容:

echo "foo bar error baz" | egrep --color '*.FAIL.*|$'
搜索短语应在两侧用
*
括起来。它将导致在搜索词或短语前后突出显示

工具书类

  • 根据您的需要,为标准错误流着色实际上可能比查找关键字更可取。我是这方面的超级粉丝。++,但作为旁白:尽管它应该可以工作,但您的命令在macOS 10.12.4上使BSD
    grep
    v2.5.1崩溃(例如,在PC-BSD 10.1上,它可以与相同的
    grep
    版本一起工作)。@mklement0真奇怪!它似乎只在完成后崩溃,但当然仍然不是一件好事。
    grep-e'.*.-e'^'
    也会崩溃,但它的颜色似乎不知怎么地卡在了第一行之后的第二行
    -e
    。删除
    --color
    选项可以避免崩溃。第一个命令复制tripleee的答案(除了使用管道而不是字符串)。第二个命令很有帮助,只是您应该提到它需要GNU
    grep
    (例如,在BSD/macOS上不起作用),并且可能会更清楚地表明整个行是颠倒的。这是对这个主题的第一个有用的回答(甚至是类似的stackoverflow问题)!以不同颜色突出显示不同单词的可能性。使用iTerm2和zsh在macos上工作