用于检查前面字符的Bash搜索命令

时间:2014-01-14 16:10:49

标签: bash unix grep

不确定标题是否措辞正确,但我正在寻找一个bash命令来检查搜索词之前的字符。例如,如果我有一个包含单词列表的文件(lines.txt):

stackoverflow
stack overflow
stack over flow

我需要搜索单词over的命令,但不包括紧接其前面stack的任何结果。因此在上面的示例中,只会显示最后两行。

我有grep -i 'over' lines.txt | grep -v 'stackover",但有没有更好的方法/选项来写这个?我已经修改了一些其他选项(-E-P),并且已经阅读了负向前瞻/后方,但无法使NOT部分工作。

2 个答案:

答案 0 :(得分:5)

是的,负面的后视应该会有所帮助:

grep -P '(?<!stack)over'

答案 1 :(得分:1)

只需添加一个单词边界即可:

grep '\<over'