grep字符后面没有字符

时间:2016-04-22 03:33:10

标签: linux unix grep negative-lookahead

我正在尝试打印文件中b后面没有e的行。我尝试使用负面预测,但它不起作用。

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

当我运行这些命令时,没有任何显示,没有错误或其他任何内容。我也检查了其他人的类似帖子,但无法运行它。

2 个答案:

答案 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)。