Unix命令,用于计算包含字母组合(重复和字母之间)的字数
如何计算包含所有字母a、b和c的文本文件中的字数。这些字母在单词中可能出现不止一次,并且单词也可能包含其他字母。(例如,“出租车司机”应被计算在内。) 使用应返回2的示例输入:Unix命令,用于计算包含字母组合(重复和字母之间)的字数,unix,grep,Unix,Grep,如何计算包含所有字母a、b和c的文本文件中的字数。这些字母在单词中可能出现不止一次,并且单词也可能包含其他字母。(例如,“出租车司机”应被计算在内。) 使用应返回2的示例输入: abc abb cabby 我尝试了两种方法: grep -E "[abc]" test.txt | wc -l grep 'abcdef' testCount.txt | wc -l 两者都返回1而不是2 提前谢谢 您可以使用awk并使用sub函数的返回值。如果成功进行了替换,sub函数的返回值将是完成的替换次
abc abb cabby
我尝试了两种方法:
grep -E "[abc]" test.txt | wc -l
grep 'abcdef' testCount.txt | wc -l
两者都返回1而不是2
提前谢谢 您可以使用
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
$echo“abc abb cabby”|
awk'{
对于(i=1;i0&&sub(/b/,“”,$i)>0&&sub(/c/,“”,$i)>0){
计数+=1
}
}
结束{打印计数}'
2.
对于所有三个字母表,我们保持返回值大于0的条件。循环的
for
将迭代每行的每个单词,并在单词中找到所有三个字母时添加计数器 我认为您无法通过多次调用grep
来解决问题。因此,我将使用(GNU grep):
第一个grep
将每个单词放在自己的一行上。试试这个,它会起作用的
sed's/\n/g'test.txt | grep a | grep b | grep c
$cat test.txt
abc abb出租车司机
$sed's/\n/g'test.txt | grep a | grep b | grep c
abc
出租车司机
希望这有帮助
<file grep -ow '\w+' | grep a | grep b | grep c
abc
cabby