grep字符后面跟着字符

我试图打印在文件中没有跟随e b行。 我尝试使用负面预测,但它不工作。

  grep 'b(?!e)' filename grep '(?!e)b)' filename egrep 'b(?!e)' f3.txt 

当我运行这些命令时,什么也没有显示,没有错误或其他的东西。 我也检查了其他人的类似post,但无法运行。

grep -E 'b([^e]|$)' filename

这应该匹配“b”,后面跟着一个不是“e”的字符,或者是在行尾的“b”。

如果你的grep使用-P支持Perl正则表达式,

 $ grep -P 'b(?!e)' <<< 'be' # Gets no output $ grep -P 'b(?!e)' <<< 'bb' bb $ grep -P 'b(?!e)' <<< 'b' b 

grep -E (在这种情况下)唯一的区别是,你不必处理行结束的情况(见pilcrow的答案 )。