使用UNIX获取精确单词

时间:2013-04-02 07:42:06

标签: unix grep

我想在Unix中搜索Exact word pattern。 示例:Log.txt文件包含以下文本:

aaa
bbb
cccaaa   ---> this should not be counted in grep output looking for aaa

我正在使用以下代码:

count=$?
count=$(grep -c aaa $EAT_Setup_BJ3/Log.txt)

此处输出应为==> 1而不是2,使用上面的代码我得到2作为输出。 有些东西不见了,所以有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:29)

使用全字选项:

grep -c  -w aaa $EAT_Setup_BJ3/Log.txt

来自grep手册:

  

-w, - word-regexp

     

仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须                 要么在行的开头,要么在非单词构成字符之前。

如评论-w中所述,是GNU扩展。使用非GNU grep,您可以使用word boundaries

grep -c "\<aaa\>" $EAT_Setup_BJ3/Log.txt

答案 1 :(得分:7)

Word边界匹配是标准POSIX grep实用程序的扩展。它可能是否可用。如果你想要便携地搜索单词,我建议你看一下perl,你会在哪里使用

perl -ne 'print if /\baaa\b/' $EAT_Setup_BJ3/Log.txt