使用命令 grep --color=always
可以为正则表达式匹配的内容提供漂亮的彩色高亮。
然而,grep
命令只返回至少有一个匹配的行。我想要的是一种方法,可以突出显示正则表达式匹配的内容,而不改变所有其他输入,并保留没有任何匹配的行。
我尝试了在 sed
中实现颜色显示,并阅读了 grep
的文档,但似乎无法得到我想要的结果。
如果我的描述不够清楚,我希望:
输入:
- fred
- ted
- red
- lead
正则表达式:
- ".*red"
输出:
- fred ( in red )
- ted
- red ( in red )
- lead
这样我就可以执行以下操作:
list_stuff | color_grep "make_this_stand_out_but_dont_hide_the_rest"
编辑:
我已经找到了一个解决方案,虽然不太美观,但它起作用:
感谢: http://www.pixelbeat.org/docs/terminal_colours/
特别是这个脚本(我进行了修改/简化): http://www.pixelbeat.org/talks/iitui/sedgrep
function sedgrep ()
{
C_PATT=`echo -e '\033[33;01m'`
C_NORM=`echo -e '\033[m'`
sed -s "s/$1/${C_PATT}&${C_NORM}/gi"
}
仍在寻找更简单的方法来完成这个任务!
egrep --color=always 'text|^'
对我来说是有效的。 - karatedog