带有颜色和多个排除项的Grep

带有颜色和多个排除项的Grep,grep,Grep,我想做一个grep来挖掘我的代码层次结构,寻找术语“x”,但要给结果上色并排除恼人的术语。现在我有: grep -Rn --color x * | grep -v -e html -e svn -e test -e doc -e y 问题是,这会因为管道而丢失匹配颜色。是否有必要做出这一声明,以避免颜色丢失?您可以尝试重复颜色搜索: grep -Rn --color x * | grep -v -e html -e svn -e test -e doc -e y | grep --color

我想做一个grep来挖掘我的代码层次结构,寻找术语“x”,但要给结果上色并排除恼人的术语。现在我有:

grep -Rn --color x * | grep -v -e html -e svn -e test -e doc -e y

问题是,这会因为管道而丢失匹配颜色。是否有必要做出这一声明,以避免颜色丢失?

您可以尝试重复颜色搜索:

grep -Rn --color x * | grep -v -e html -e svn -e test -e doc -e y | grep --color x
指定
--color=always
以通过管道保留颜色格式:

grep --color=always x * | grep -v -e html -e svn -e test -e doc -e y
稍后,如果您碰巧需要将结果通过管道传输到文件中,并且需要删除格式化颜色的转义字符,那么这里有一个漂亮的sed脚本,您可以通过管道传输结果以删除转义字符:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" 

(请注意,对于OS X,您需要
-E
选项,而不是
-r

是的,我这样做了,但问题是如果文件路径中有“X”,那么它也会突出显示。非常好。你知道有没有办法把颜色设置为默认值?另外,有没有可能在不使用管道的情况下进行“这个而不是那些”匹配?一点无耻的插话:如果你想将某些标志设置为“默认”,那么你就不必每次都键入它:我为grep/ack编写了一个shell工具,以使用记住你首选设置的“配置文件”。简介:关于github: