Linux下统计文档中每个字符出现的次数

Posted yutianzuijin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下统计文档中每个字符出现的次数相关的知识,希望对你有一定的参考价值。

给定一个中文文档,我们想统计其中每个字出现的次数该怎么做呢?如果是英文文档,这个问题有比较固定的思路:用tr命令或者awk命令按照每行的空格将单词切分到多行,然后sort命令排序所有的行,最后uniq命令统计重复行的次数即可获得每个单词出现的次数。但是换成中文文档之后,tr或者awk命令就无法再根据空格将一行汉字切分到多行,需要我们更换其他命令。
一种可行的方法是借用cut命令。cut命令可以按照字节,字符和字段来显示指定位置。我们可以先利用wc –m命令获得当前行的长度,然后利用cut –c依次切割出每个汉字,这样就可以获得一个每行为单个汉字的文档。之后我们就可以利用sort和uniq命令统计每个汉字出现的次数了。脚本如下:

#!/bin/sh

for line in `cat $1`; do
    count=`echo $line|wc -m`
    echo $count $line

    i=1;
    while [ "$i" -lt "$count" ]; do
        one_word=`echo $line|cut -c$i`
        #echo $i $one_word
        echo "$one_word" >>temp
        ((i++))
    done
done

sort temp|uniq -c|sort -k1nr > $2

rm -f temp

上面的脚本需要两个参数,第一个参数是要统计的文件,第二个参数是输出统计结果的文件。

以上是关于Linux下统计文档中每个字符出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

统计指定字符串中每个单词出现的次数(C++)

怎么统计输入的一个字符串中每个字母出现的次数?

JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数

从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件

java统计字符串数组中每个字符串所出现的次数

linux中统计文件中一个字符串出现的次数