如何使用grep反向搜索多个文本字符串

48

我正试图过滤掉日志文件中不停重复出现的几个文本块。例如:

grep -v ("string one that I don't want" \| "string two that I don't want") file.log

我尝试了几种不同的方法,并调整了空格。有时它会过滤掉第一个字符串,有时两个都不行。使用grep正确的格式是什么,以便过滤出多个文本块?

1个回答

97
您可以在grep命令中多次使用-e选项,以跳过多个搜索项:
grep -v -e "string one that I don't want" -e "string two that I don't want" file.log

或者使用 grep -E 命令结合正则表达式来支持扩展的正则表达式:

grep -vE 'string one|string two' file.log

1
谢谢。两种方法都可以。我曾尝试使用那个egrep方法。但我想我在管道字符之间放了空格。所以当时它没有起作用。现在它可以工作了。 - user2476714
6
注给像我一样的谷歌用户:-v--invert-match是同义词(详情请参考这里)。如果没有这个提示,我会猜测-v代表"verbose"而产生困惑。 - Frank N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接