我有一个sample.txt文件,如下所示:
1.hi _plane_ is
2.hi airplane is
3.hi plane is
4.hi _plane- is
5.hi :plane: is
plane
there is a plane here
我想找一个单词" plane"不在其他词之内,说"飞机", 所以在grep之后,输出将如下所示(仅过滤掉第2行)
1.hi _plane_ is
3.hi plane is
4.hi _plane- is
5.hi :plane: is
plane
there is a plane here
我试过了:
grep -w "plane" sample.txt
grep "\bplane\b\|\Bplane\B" sample.txt
但输出与我的预期不符。 我应该如何使用grep来获得正确的结果?
非常感谢。
答案 0 :(得分:2)
egrep -v '[[:alpha:]]+plane|plane[[:alpha:]]+'
答案 1 :(得分:0)
试试这个:
grep "(^|[^a-zA-Z])plane([^a-zA-Z]|$)" sample.txt
\b
的问题是,下划线字符_
被视为“字词”,因此\bplane\b
与_plane_
不匹配
答案 2 :(得分:0)
使用GNU grep
:
grep -w plane sample.txt
抓一点; grep -w
将下划线视为单词的一部分,因此在这种情况下它并不好。