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

时间:2015-03-12 05:59:12

标签: bash shell

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

E.g。如果它包含单词“FAIL”,那么该行将显示为红色。

我看过这个https://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script 但我正在寻找比编写包装脚本更简单的东西,我将不可避免地在将来的某个时间进行调试。

4 个答案:

答案 0 :(得分:4)

对于一个简单的解决方法,请通过grep --color将其翻录为红色。

添加像^这样的后备来打印不包含任何匹配项的行。

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

Grep output with multiple Colors?描述了在需要时获取多种颜色的黑客攻击。

答案 1 :(得分:1)

如果您愿意安装BASH脚本和FAILh -i 'FAIL.*' 包具有有用的默认颜色和简单的界面https://github.com/paoloantinori/hhighlighter

hhighlight example

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

h -i '.*FAIL.*'

或包含h -i '.*FAIL.*' '.*PASS.*' '.*WARN.*' 的内容:

bipush

或用于各种常见日志条目:

invokestatic

答案 2 :(得分:1)

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

echo "foo bar error baz" | egrep --color '*.FAIL.*|$'

搜索词组的两侧均应用.*括起来。它将在搜索单词或短语之前和之后引起高亮显示。

参考文献

  1. https://unix.stackexchange.com/a/330613/341457
  2. How .* (dot star) works?

答案 3 :(得分:0)

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

 your_command | grep --color -e ".*FAIL.*" -e "^"

如果您更喜欢倒线:

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