我有几个文本文件,我想计算每个字母出现多少次?
具体来说,我想使用UNIX shell来执行此操作,形式为:cat file | ......做点什么......
有没有办法让wc命令执行此操作?
答案 0 :(得分:44)
grep char -o filename | wc -l
答案 1 :(得分:12)
另一种选择:
tr -d -C X <infile | wc -c
其中X是您要计算的字符或字符串,infile是输入文件。
答案 2 :(得分:1)
替代grep:
sed 's/[^x]//g' filename | tr -d '\012' | wc -c
其中x
是您要计算的字符。
答案 3 :(得分:1)
还有awk:
$ echo -e "hello world\nbye all" | awk -Fl '{c += NF - 1} END {print c}'
5
将-Fl
更改为-F<your character>
。
这可以通过将字段分隔符设置为-F
指定的字符,然后累积每行的字段数 - 1(因为如果有一个分隔符,有两个字段 - 但我们只应该计数1 )。
答案 4 :(得分:1)
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt
您可以添加当前行号的计数以获取awk中的行号。
答案 5 :(得分:1)
echo“a / b / c / d / e / f / g”| awk -F“/”'{print NF}'
这将给出字符“/”
的出现次数答案 6 :(得分:1)
在这种情况下,我计算字符“|”:
expr `wc -c < filename` \- `tr -d \| < filename | wc -c`
答案 7 :(得分:1)
您可以轻松尝试:
grep -c 'YOUR LETTER' YOUR FILE
答案 8 :(得分:0)
尝试
grep [PATTERN] -o [FILE] | wc -l
如果不需要,请不要使用猫。
答案 9 :(得分:0)
这是另一种方式
cat input_file | \
awk 'BEGIN {FS="x"; var=0 } \
{if (NF>0){ var=var + (NF-1) } } \
END{print var}'
其中X是您要计算的字符或字符串,infile是输入文件