我正在尝试打印文件中b
后面没有e
的行。我尝试使用负面预测,但它不起作用。
grep 'b(?!e)' filename
grep '(?!e)b)' filename
egrep 'b(?!e)' f3.txt
当我运行这些命令时,没有任何显示,没有错误或其他任何内容。我也检查了其他人的类似帖子,但无法运行它。
答案 0 :(得分:4)
grep -E 'b([^e]|$)' filename
那应该匹配' b'接下来是一个不是'或' b'在行尾。
答案 1 :(得分:1)
如果你的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's answer)。