我想在Unix中搜索Exact word pattern.示例:Log.txtfile包含以下文本:
aaa
bbb
cccaaa ---> this should not be counted in grep output looking for aaa
Run Code Online (Sandbox Code Playgroud)
我使用以下代码:
count=$?
count=$(grep -c aaa $EAT_Setup_BJ3/Log.txt)
Run Code Online (Sandbox Code Playgroud)
这里输出应该是==> 1而不是2,使用上面的代码我得到2作为输出.有些东西不见了,所以有人可以帮我这个吗?
Atr*_*opo 32
使用全字选项:
grep -c -w aaa $EAT_Setup_BJ3/Log.txt
Run Code Online (Sandbox Code Playgroud)
从grep手册:
-w, - word-regexp
仅选择包含构成整个单词的匹配项的行.测试是匹配的子字符串必须位于行的开头,或者前面是非单词构成字符.
正如评论中所指出的那样-w是GNU扩展.使用非GNU grep,您可以使用word boundaries:
grep -c "\<aaa\>" $EAT_Setup_BJ3/Log.txt
Run Code Online (Sandbox Code Playgroud)
字边界匹配是标准POSIX grep实用程序的扩展.它可能是否可用.如果你想要便携地搜索单词,我建议你看一下perl,你会在哪里使用
perl -ne 'print if /\baaa\b/' $EAT_Setup_BJ3/Log.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54353 次 |
| 最近记录: |