在linux / terminal下有什么方法可以计算char f在纯文本文件中出现的次数吗?
答案 0 :(得分:171)
这个怎么样:
fgrep -o f <file> | wc -l
注意:除了更容易记忆/复制和自定义之外,这比Vereb的回答快三倍(抱歉,编辑!拙劣的第一次测试)。
答案 1 :(得分:62)
更快:
tr -cd f < file | wc -c
此命令的时间,其中包含4.9 MB和1100000次搜索字符的文件:
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
答案 2 :(得分:8)
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
答案 3 :(得分:6)
如果您需要做的只是计算包含角色的行数,这将有效:
grep -c 'f' myfile
但是,它会计算同一行中多次出现的'f'与单个匹配。
答案 4 :(得分:3)
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
用您的角色替换两次出现的“A”,并用输入文件替换“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