如何计算包含所有字母a,b和c的文本文件中的单词数。这些字母可能在单词中出现不止一次,单词也可能包含其他字母。 (例如," cabby"应该计算在内。)
使用应返回2的样本输入:
abc abb cabby
我试过了两个:
grep -E "[abc]" test.txt | wc -l
grep 'abcdef' testCount.txt | wc -l
两者都返回1而不是2。
提前致谢!
答案 0 :(得分:1)
您可以使用awk
并使用sub
函数的返回值。如果成功替换,sub
函数的返回值将是完成的替换次数。
$ echo "abc abb cabby" |
awk '{
for(i=1;i<=NF;i++)
if(sub(/a/,"",$i)>0 && sub(/b/,"",$i)>0 && sub(/c/,"",$i)>0) {
count+=1
}
}
END{print count}'
2
对于所有三个字母,我们将返回值的条件保持为大于0。当在单词中找到所有三个字母时,for loop
将迭代每行的每个单词添加计数器。
答案 1 :(得分:1)
我不认为你可以使用grep
的多次调用来解决这个问题。因此我会选择(GNU grep):
<file grep -ow '\w+' | grep a | grep b | grep c
输出:
abc
cabby
第一个grep
将每个单词放在一行。
答案 2 :(得分:0)
试试这个,它会起作用
abc abb cabby
ABC 马车夫
希望这会有所帮助..