不确定标题是否措辞正确,但我正在寻找一个bash命令来检查搜索词之前的字符。例如,如果我有一个包含单词列表的文件(lines.txt):
stackoverflow
stack overflow
stack over flow
我需要搜索单词over
的命令,但不包括紧接其前面stack
的任何结果。因此在上面的示例中,只会显示最后两行。
我有grep -i 'over' lines.txt | grep -v 'stackover"
,但有没有更好的方法/选项来写这个?我已经修改了一些其他选项(-E
和-P
),并且已经阅读了负向前瞻/后方,但无法使NOT部分工作。
答案 0 :(得分:5)
是的,负面的后视应该会有所帮助:
grep -P '(?<!stack)over'
答案 1 :(得分:1)
只需添加一个单词边界即可:
grep '\<over'