UNIX/Linux里统计文件里某个字符出现的次数(转)

问题:

 UNIX/Linux里如何统计文件里某个字符出现的次数?例如在文件mydoc.txt中,字符A出现了几次?

解答:

 perl -e 'while(<>){$count+= s/A//g;} print “$countn”;' filename

解释:

 perl –e ‘xxxxx……’ 表示执行单引号中的指令

filename 表示要处理的对象是filename,也就是我们需要统计的文件

while(<>):每次读出文件的一行,直到文件结束。读取出来的内容放入默认变量$_中。

s/A//g:把默认变量($_,就是上面读出来的)中的A字符全部(g)替换为空。这个语句返回的结果是替换成功的次数。

$count+ = s/A//g:把替换成功的次数记录在$count中。

Print $count: 打印总的次数

把以上放在一起就是:每次读取文件中的一行,计算其中字符A出现的次数,并累加到变量$count中。最后打印出来。

如果想统计其他的字符,直接修改A为需要统计的就可以了。

更进一步:

如果要统计各个字符出现次数,如何实现?

解答:

perl -e '$/=undef;$_=<>; printf "$&:%dn", s/$&//g while /S/;' filename

解释:

 建议参考perl文档中perlvar部分。


原文地址:https://www.cnblogs.com/yixiaoyang/p/2036288.html