如何指定多个要忽略的字符串(grep 命令)

如何指定多个要忽略的字符串(grep 命令)

我正在使用 grep 过滤掉我不感兴趣的目录,如下所示:

svn stat | grep -v data/charts | grep -v lib/model | grep -v web/pics

这似乎有点“黑客”。有没有更好的方法来指定多个要忽略的字符串,这样我就不必链接多个 grep 命令了?

答案1

你可以做svn stat | grep -vE 'data/charts|lib/model|web/pics'

您可能还想看看grep -xack这可能是另一个您感兴趣的工具。

答案2

您可以将析取与 grep 结合使用。它像许多正则表达式一样是管道符号,但您必须对其进行转义,因为 bash 会将其解释为实际管道。试试这个:

svn stat | grep -v data/charts\|lib/model\|web/pics

答案3

或者使用 grep -f,并将模式列表放入文件中。(当然,如果列表内容相当稳定,那么这样做最方便。)grep -vf 可以正常工作,并且可以像常规 grep -v 一样反转匹配的含义。只需确保文件中没有任何空白行,因为它们会匹配所有内容!

相关内容