如何根据匹配的内容用不同的颜色(例如绿色或红色)突出显示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条评论:
如果我这样做:
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
相匹配的行才会被打印(绿色突出显示)...不是预期的结果...
答案 0 :(得分:0)
此处的中间grep会找到所有“ = xxxx”,并将xxxx部分涂成红色。
最后一个grep查找“ localhost”或行首,并将其标记为绿色。由于“行首”不是可显示的字符,因此不会上色,但是由于所有行都有“行首”,因此来自中间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 -E --color=always 'localhost|^'
感谢Sundeep的“ grep -P”提示。
我喜欢OP的[^=]*$
匹配“ =”符号后的所有内容!