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

在 linux/Terminal 下有没有办法计算 char f 在纯文本文件中出现了多少次?

100498 次浏览
echo $(cat <file>  | wc -c) - $(cat <file>  | tr -d 'A' | wc -c) | bc

字母 A 在哪里

这个命令的文件大小为4.9 MB,搜索字符出现次数为1100000:

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

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

用您的字符替换两次出现的“ A”,并用您的输入文件替换“ file”。

  • 移除新行
  • sed 's/A/A\n/g: 在每次出现“ A”之后添加一个换行符
  • 计算行数

例如:

$ cat file
abcdefgabcdefgababababbbba




1234gabca


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

这样吧:

fgrep -o f <file> | wc -l

注意: 除了更容易记忆/复制和自定义,这是大约三次(对不起,编辑!搞砸了第一次测试)比韦伯的答案还快。

如果你所需要做的就是计算包含你的角色的行数,这样就可以了:

grep -c 'f' myfile

但是,它将同一行中多次出现“ f”的情况计为一个匹配项。

甚至更快:

tr -cd f < file | wc -c

这个命令的时间 与一个4.9 MB 的文件和1100000个出现的搜索字符:

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

对于同一个文件,使用 echocattrbc进行动词回答的时间:

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

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

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

是时候用 fgrepwc回答同一个文件了:

real   0m0.522s
user   0m0.477s
sys    0m0.023s