如何统计一个文件中各个字母出现的次数?

如何统计一个文件中各个字母出现的次数?

可以实现统计一个文件内的a,b,c,、、、z各个英文字母的个数


谢谢!急啊!
斑竹!帮忙      
复制内容到剪贴板
代码:
[color=red]$ cat count_char.sh[/color]
#!/bin/bash

ALL_CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

for ((i = 0; i < ${#ALL_CHARS}; ++i)); do
    ch=${ALL_CHARS:$i:1}
    eval "count_$ch=0"
done

echo "Counting, wait a while ..."

while read -n 1 ch; do
    if expr index $ALL_CHARS "$ch" >& /dev/null; then
        eval "((count_$ch++))"
    fi
done

for ((i = 0; i < ${#ALL_CHARS}; ++i)); do
    ch=${ALL_CHARS:$i:1}
    eval "echo $ch: \$count_$ch"
done

[color=red]$ ./count_char.sh < /your/file[/color]
      
效率不高,可以考虑优化       
没必要那么复杂吧?
cat filename | awk '{print $0;}'|sed -e 's/./&\n/g'|sort |uniq -c      
强! 俺不知道 uniq 还有这功能      
cat filename | awk '{print $0;}'|sed -e 's/./&\n/g'|sort |uniq -c这一句我在AIX上运行有问题,sed -e 's/./&\n/g'并不能给每个单词加上\n,即使改成这样:sed -e 's/./&\\n/g' 给每个单词加上\n后,并没有给每个单词换行      
AIX 上许多命令的用法跟 Linux 都有很大区别,请参阅相应的文档      
[QUOTE=xiaoyafeng]没必要那么复杂吧?
cat filename | awk '{print $0;}'|sed -e 's/./&\n/g'|sort |uniq -c[/QUOTE]

中间那个awk '{print $0;}'干嘛用?