统计字符出现次数主要用到以下几个命令:
1.wc -c:输出字符个数
2.cut -c:将给定的内容拆分成单个字符一行显示
3.sort 排序
4.uniq -c:在每列旁边显示该行重复出现的次数。
#!/bin/bash
#统计字数出现的次数
function countOfWords(){
# 定义文件路径
f_path="./temp.txt" # 临时文件
f_path2="./count.txt" # 统计结果存储文件
#echo > $f_path2 # 清空文件内容
#echo > $f_path
# 读取文件内容
while read lines
do
# 统计每一行字符个数
line_count=`echo $lines | wc -m`
# 输出每一个的内容以及字符个数
echo "$lines == $line_count"
# 遍利每一行
flag=1
while [ $flag -lt $line_count ]
do
# 将每一行内容拆分成多行,即一个字符占一行并存入临时文件中
word_count=`echo $lines | cut -c$flag`
echo "$word_count" >> $f_path
let flag++
done
done < words.txt
# 排序
sort $f_path | uniq -c | sort -k1nr > $f_path2
}
countOfWords
# 显示统计文本的内容
cat $f_path2
测试结果:
:w:保存当前文件 == 10
:x保存当前文件并退出 == 12
:q:退出vi == 8
:q!:不保存文件并退出vi == 15
:!command:执行shell命令command == 27
:r filename:读入文件到当前行下 == 22
:r!command:将命令command的输出结果放到当前行 == 32
13 :
9 m
5 a
5 n
4 c
4 d
4 o
4 出
4 当
4 件
4 前
4 文
3 !
3 e
3 i
3 l
3 保
3 存
3 行
3 退
2 q
2 r
2 v
2 并
2 到
2 令
2 命
1
1
1 f
1 h
1 s
1 w
1 x
1 不
1 的
1 读
1 放
1 果
1 将
1 结
1 入
1 输
1 下
1 执