我有一个文件,我想查找传入单词的总出现次数,同时支持正则表达式
grep -e "Hello*" filename | wc -w
但是有一些错误,我假设我做了类似的事情
grep -e "H" filename | wc -w
它应该只匹配 EXACTLY H 而不是计算以 H 开头的东西,就像 grep 现在做的那样。
有谁知道怎么做?
尝试这个:
grep '\bH\b'
例如:
kent$ echo "Hello
IamH
we need this H
and this H too"|grep '\bH\b'
we need this H
and this H too
请注意,如果您只想计算匹配的单词,则需要使用-o
option on grep
。(谢谢 fotanus)
编辑
您可以通过 获取所有匹配的单词grep -o
,在这种情况下-c
没有帮助,因为它计算匹配的行。你可以通过grep -o
传给wc -l
例如:
kent$ echo "No Hfoo will be counted this line
this line has many: H H H H H H H (7)
H (8 starting)
foo bar (9 ending) H
H"|grep -o '\bH\b'|wc -l
10
或更简单的单进程解决方案与 awk:
awk '{s+=gsub(/\<H\>/,"")}END{print s}' file
同样的例子:
kent$ echo "No Hfoo will be counted this line
this line has many: H H H H H H H (7)
H (8 starting)
foo bar (9 ending) H
H"|awk '{s+=gsub(/\<H\>/,"")}END{print s}'
10