我在尝试使用 grep 的颜色环境进行多色突出显示匹配时遇到了困难。
在我偶然发现彩色 grep我发现在一次运行中突出显示多个模式非常有用。所以我按照说明设置了别名,但后来遇到了以下问题:
echo "Im looking for KeyWords" | grep 'KeyWords' --color=always | green-grep 'Word'
结果是
我在找钥匙 单词s (斜体=红色,粗体=绿色)
其中“s”没有以红色突出显示,因为grep
比赛结束后将颜色环境恢复正常。
有什么方法可以实现这一点grep
,还是我面临困境?
答案1
您没有碰壁,但您碰壁了|
!(因此不幸的是,如果不对源代码进行大规模重写,您就无法做到这一点grep
。)
但是,我喜欢这个想法,所以如果您愿意,请随意向 FSF 提交错误,或者如果您不想费力,我会为您提交错误!(只需发表评论)
很棒的问题!我已经添加了:
alias grey-grep="GREP_COLOR='1;30' grep --color=always"
alias red-grep="GREP_COLOR='1;31' grep --color=always"
alias green-grep="GREP_COLOR='1;32' grep --color=always"
alias yellow-grep="GREP_COLOR='1;33' grep --color=always"
alias blue-grep="GREP_COLOR='1;34' grep --color=always"
alias magenta-grep="GREP_COLOR='1;35' grep --color=always"
alias cyan-grep="GREP_COLOR='1;36' grep --color=always"
alias white-grep="GREP_COLOR='1;37' grep --color=always"
到我的bash.bashrc
文件!
答案2
仅当 grep 函数返回单行时,这种方法才有效,否则管道将取消后续行 我试图使用带有五个正则表达式的 egrep,其中表达式位于原始文件的不同行中(这是一个包含大量信息的日志);到目前为止,我可以更改颜色,但不能为每个正则表达式过滤器获得不同的颜色:
cat logfile egrep 'regex1|regex2|regex3|regex4|regex5'