我有一个程序可以输出一个stdout
喜欢的输出:
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
Run Code Online (Sandbox Code Playgroud)
为了更容易地从输出中发现失败,我想FAIL
用红色标记关键字的出现而不丢弃其他消息。如果我也可以OK
用绿色突出显示关键字,那就太好了:)。
使用管道egrep --color FAIL
将只显示FAIL
存在关键字的行。
War*_*ung 10
基于manatwork
另一个问题中出色的“或什么都没有”的技巧,我提供了这个,它增加了获得两种高亮颜色的能力:
$ myprogram | \
GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'
Run Code Online (Sandbox Code Playgroud)
也就是说,您运行grep
两次输出,GREP_COLORS
每次都使用不同的环境变量。
'01;32' 值表示“大胆的绿色”,另一个表示“大胆的红色”。有关更多想法,请参阅有关 ANSI 代码的维基百科文章。
唉,这需要 GNU grep 2.5.3 或更高版本。旧版本的 GNU grep 支持不同的着色机制,但这些版本有一个错误,阻止您在管道中多次使用该功能。BSD grep 模拟了旧的 GNU grep 着色机制,它会在一个管道中工作两次,但由于manatwork
黑客攻击,它会大喊“空子表达式” 。
您可以删除前两行末尾的反斜杠,使其全部成为一行。为了清晰起见,我只是在此处拆分它并与 SE 页面格式配合使用。