Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix命令,用于计算包含字母组合(重复和字母之间)的字数_Unix_Grep - Fatal编程技术网

Unix命令,用于计算包含字母组合(重复和字母之间)的字数

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函数的返回值将是完成的替换次

如何计算包含所有字母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
函数的返回值将是完成的替换次数

$ 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