-1

我想在 Unix 中搜索确切的单词模式,

示例:Log.txt 文件包含以下文本:

aaa         (only this 'aaa' pattern shhold be counted)
bbb
cccaaa   ---> this should not be counted in grep output
ccc_aaa   --> this should not be counted in grep output
ccc-aaa   --> this should not be counted in grep output
ccc.aaa   ---> this should not be counted in grep output

我正在使用以下代码-

count=$?
count=$(grep -c -w aaa $ZZZ\Log.txt)

这里的输出应该是 ==> 1 但我得到 4 作为输出,我想,有些东西丢失了所以,有人可以帮我解决这个问题吗?

4

2 回答 2

1

我相信您正在寻找-x选择。这是手册页的摘录,它始终是找到选项解决方案的最快方法。

-x, --line-regexp
          Select  only  those  matches  that exactly match the whole line.
          (-x is specified by POSIX.)
于 2013-04-04T07:00:39.700 回答
0

给定示例输入,我希望输出为 3。一个用于您期望的行,一个用于ccc-aaa,一个用于ccc.aaa. grep 文档明确指出单词字符是字母、数字和下划线。如果您想考虑.-作为单词组成字符,只需预先过滤数据:

count=$( tr < $ZZZ/Log.txt .- ' '  | grep -c -w aaa )

以上用于tr将出现的.和转换-为空格。您可能需要根据需要扩展要考虑的字符集。

于 2013-04-04T11:34:14.203 回答