如何使用UNIX shell计算字母在文本文件中出现的次数?

时间:2009-09-02 15:55:16

标签: unix word-count

我有几个文本文件,我想计算每个字母出现多少次?

具体来说,我想使用UNIX shell来执行此操作,形式为:cat file | ......做点什么......

有没有办法让wc命令执行此操作?

10 个答案:

答案 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是输入文件