Bash终端输出-高亮显示包含一些文本的行
当我在bash中得到输出时,我得到了我的标准2色屏幕。如果一行包含一些关键文本输出,是否有任何方法可以在默认情况下高亮显示该行 例如,如果包含“失败”一词,则该行为红色 我读过这个Bash终端输出-高亮显示包含一些文本的行,bash,shell,Bash,Shell,当我在bash中得到输出时,我得到了我的标准2色屏幕。如果一行包含一些关键文本输出,是否有任何方法可以在默认情况下高亮显示该行 例如,如果包含“失败”一词,则该行为红色 我读过这个 但是,我正在寻找一种比编写包装器脚本更简单的方法,在将来的某个时候,我不可避免地要调试它。要找到一种简单的解决方法,请通过管道将它连接到grep--color以将一些单词变成红色 添加类似于^的回退,以打印不包含任何匹配项的行 grep --color -e 'FAIL' -e '^' <<<$'F
但是,我正在寻找一种比编写包装器脚本更简单的方法,在将来的某个时候,我不可避免地要调试它。要找到一种简单的解决方法,请通过管道将它连接到
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上使BSDgrep
v2.5.1崩溃(例如,在PC-BSD 10.1上,它可以与相同的grep
版本一起工作)。@mklement0真奇怪!它似乎只在完成后崩溃,但当然仍然不是一件好事。grep-e'.*.-e'^'
也会崩溃,但它的颜色似乎不知怎么地卡在了第一行之后的第二行-e
。删除--color
选项可以避免崩溃。第一个命令复制tripleee的答案(除了使用管道而不是字符串)。第二个命令很有帮助,只是您应该提到它需要GNUgrep
(例如,在BSD/macOS上不起作用),并且可能会更清楚地表明整个行是颠倒的。这是对这个主题的第一个有用的回答(甚至是类似的stackoverflow问题)!以不同颜色突出显示不同单词的可能性。使用iTerm2和zsh在macos上工作