grep-使用正则表达式打印所有不包含模式的行(不带-v)

时间:2015-01-02 00:11:48

标签: regex grep

如何使用带有grep的正则表达式打印所有不包含模式的行。我不能使用-v,因为我想在一个更复杂的版本中实现正则表达式,-v是不切实际的。

但每当我尝试打印不包含图案的线条时,我都无法获得预期的输出。

例如,如果我有这个文件:

blah blah blah
hello world
hello people
something

我想要打印所有不包含hello的行,输出应为:

blah blah blah
something

我试过这样的事情,但它没有工作:

egrep '[^hello]' file

关于SO使用-v的所有答案,我找不到使用正则表达式的答案

2 个答案:

答案 0 :(得分:5)

您不能在字符类中使用“整个”单词。您的正则表达式当前匹配除helo之外的任何字符。您可以将grep与以下选项一起使用,并实现Negative Lookahead ...

grep -P '^(?!.*hello).*$' file

Ideone Demo

答案 1 :(得分:1)

我看到你要求正则表达式,并且不能使用-v。那些像awk,sed这样的其他程序呢? 如果没有,您的系统是否没有awksed等?

awk '!/hello/' file

sed '/hello/d' file

sed -n '/hello/!p' file