我想在Unix中搜索Exact word pattern,
示例: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作为输出,我想,有些东西不见了所以,有人可以帮我这个吗?
答案 0 :(得分:1)
我相信您正在寻找-x
选项。以下是手册页的摘录,它总是找到选项解决方案的最快方法。
-x, --line-regexp
Select only those matches that exactly match the whole line.
(-x is specified by POSIX.)
答案 1 :(得分:0)
给定样本输入,我希望输出为3.对于您期望的行,一行为ccc-aaa
,一行为ccc.aaa
。 grep文档清楚地指出单词字符是字母,数字和下划线。如果您想将.
和-
视为字构成字符,只需预先过滤数据:
count=$( tr < $ZZZ/Log.txt .- ' ' | grep -c -w aaa )
上述内容使用tr
将.
和-
的出现次数转换为空格。您可能希望根据需要扩展您要考虑的字符集。