当我用bash输出时,我得到了标准的2色屏幕。默认情况下,如果它包含一些关键文本输出,是否有任何方法可以突出显示一行?
E.g。如果它包含单词“FAIL”,那么该行将显示为红色。
我看过这个https://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script 但我正在寻找比编写包装脚本更简单的东西,我将不可避免地在将来的某个时间进行调试。
答案 0 :(得分:4)
对于一个简单的解决方法,请通过grep --color
将其翻录为红色。
添加像^
这样的后备来打印不包含任何匹配项的行。
grep --color -e 'FAIL' -e '^' <<<$'Foo\nBar FAIL Baz\nIck'
Grep output with multiple Colors?描述了在需要时获取多种颜色的黑客攻击。
答案 1 :(得分:1)
如果您愿意安装BASH脚本和FAIL
,h -i 'FAIL.*'
包具有有用的默认颜色和简单的界面https://github.com/paoloantinori/hhighlighter:
您可以像这样使用它来突出显示以FAIL
开头的行:
h -i '.*FAIL.*'
或包含h -i '.*FAIL.*' '.*PASS.*' '.*WARN.*'
的内容:
bipush
或用于各种常见日志条目:
invokestatic
答案 2 :(得分:1)
这不仅会突出显示一个单词,还会突出显示整行:
echo "foo bar error baz" | egrep --color '*.FAIL.*|$'
搜索词组的两侧均应用.*
括起来。它将在搜索单词或短语之前和之后引起高亮显示。
答案 3 :(得分:0)
基于tripleee的答案,以下命令将突出显示匹配的红色线并保留其他线:
your_command | grep --color -e ".*FAIL.*" -e "^"
如果您更喜欢倒线:
your_command | GREP_COLORS='mt=7' grep --color -e ".*FAIL.*" -e "^"