在纯文本文件中计数字符的出现次数

有没有什么办法在Linux /terminal计数,字符f在一个纯文本文件中出现多less次?

这个怎么样:

fgrep -of <file> | wc -l 

注意:除了更易于记忆/复制和定制,这比Vereb的答案快了三倍(对不起,编辑!第一次testing)。

甚至更快:

 tr -cd f < file | wc -c 

这个命令的时间是 4.9 MB和1100000个search字符的文件:

 real 0m0.089s user 0m0.057s sys 0m0.027s 

时间为Vereb回答与echocattrbc为同一个文件:

 real 0m0.168s user 0m0.059s sys 0m0.115s 

Rob Hruska用trsedwc回答同一个文件的时间:

 real 0m0.465s user 0m0.411s sys 0m0.080s 

Jefromi的时间用fgrepwc回答同一个文件:

 real 0m0.522s user 0m0.477s sys 0m0.023s 
 echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc 

A是angular色

这个命令的时间是4.9 MB和1100000个search字符的文件:

 real 0m0.168s user 0m0.059s sys 0m0.115s 

如果你只需要计算包含angular色的行数就可以了:

 grep -c 'f' myfile 

然而,它在同一行计数多次出现的“f”作为单个匹配。

tr -d '\n' < file | sed 's/A/A\n/g' | wc -l

用你的字符replace两个“A”,用你的input文件replace“file”。

  • tr -d '\n' < file :删除换行符
  • sed 's/A/A\n/g :每次出现“A”后添加换行符
  • wc -l :统计行数

例:

 $ cat file abcdefgabcdefgababababbbba 1234gabca $ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l 9