【发布时间】:2018-12-26 03:31:20
【问题描述】:
如何根据匹配的内容以不同的颜色(例如绿色或红色)突出显示 grep 结果?
目前,我已经这样做了:
grep -H -i "^mail.hostname" WEB-INF/config/mail.props | grep --color=auto -P "\=.*"
哪个输出(例如):
WEB-INF/config/mail.props:mail.hostname=localhost
=localhost 突出显示的位置。 (注意——我希望不要突出显示 = 符号,但这是另一回事。)
如何使突出显示在 localhost 时显示为绿色,而对于任何其他值(例如 smtpserver)显示为红色?
更新 -- 回答前 2 个 cmets:
如果我这样做:
grep -H -i "^mail.hostname" WEB-INF/config/mail.props \
| GREP_COLOR='01;31' grep --color=auto -P '=\K.*' \
| GREP_COLOR='01;32' grep --color=auto -P '=\Klocalhost'
只有在匹配localhost时才会打印该行(以绿色突出显示)...不是预期的结果...
【问题讨论】:
-
为了避免
=被高亮,可以使用grep --color=auto -P '=\K.*'(注意:=不需要转义) -
感谢 cmets...我快到了,但还没到...
-
尝试使用
grep --color=always作为中间 grep -
grep -H -i "^mail.hostname" WEB-INF/config/mail.props | GREP_COLOR='01;31' grep --color=always -P '=\K.*' | GREP_COLOR='01;32' grep --color=auto -P '=\Klocalhost'不再有输出
标签: bash shell colors grep match