我怎么能用grep得到一个完整的词?

时间:2017-04-11 10:10:58

标签: linux bash grep

我想通过grep获取包含已定义单词的行。

编辑:解决方案是this一个。

我知道我可以使用-w选项,但它似乎没有做到这一点。

例如:包含由标点符号分隔的我定义的单词的每个单词。如果我寻找狗,它会告诉我不仅包含狗词,还包括cats.dogs,cats-dogs等的行。

# cat file.txt
some alphadogs dance
some cats-dogs play
none dogs dance
few dog sing
all cats.dogs shout

用grep:

# cat file.txt | grep -w "dogs"
some cats-dogs play
none dogs dance
all cats.dogs shout

期望的输出:

# cat file.txt | grep -w "dogs"
none dogs dance

你知道任何可以让你得到全部信息的解决方法吗?我用\ b或\<进行了测试结果为阴性。

谢谢, Eudald

2 个答案:

答案 0 :(得分:1)

在已安装的Value的任何版本中使用字边界锚点

grep

regular-expressions页面的摘录

  

     

[..]锚点与任何字符都不匹配。他们匹配一个位置。 grep '^dogs$' file.txt 匹配字符串的开头,^匹配字符串的末尾。[..]

答案 1 :(得分:0)

尝试使用-x参数:

grep -x dogs file.txt

来自grep手册:

  

-x, - line-regexp

     

仅选择与整行完全匹配的匹配项。 (-x由POSIX指定。)

注意:将cat输出管道传输到grep

时,bigint无效