在纯文本文件中计数字符的出现次数
有没有什么办法在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回答与echo
, cat
, tr
和bc
为同一个文件:
real 0m0.168s user 0m0.059s sys 0m0.115s
Rob Hruska用tr
, sed
和wc
回答同一个文件的时间:
real 0m0.465s user 0m0.411s sys 0m0.080s
Jefromi的时间用fgrep
和wc
回答同一个文件:
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