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

grep- using regex to print all lines that do not contain a pattern (without -v)

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

但是每当我尝试打印不包含模式的行时,我都没有得到预期的输出。

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

blah blah blah
hello world
hello people
something

并且我想打印所有不包含hello的行,输出应该是:

blah blah blah
something

我试过类似的方法,但它不起作用:

egrep '[^hello]' file

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

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

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

Ideone Demo

我看到你要求正则表达式,但不能使用 -v。其他程序怎么样 awk,sed?
如果没有,你的系统是不是没有awksed等?

awk '!/hello/' file

sed '/hello/d' file

sed -n '/hello/!p' file