shell统计一个文件里某行出现的次数并排序

话说有个aaa.txt文件,文件内容如下:

aaaa
bbbb
cccc
dddd
eeee
ffff
mmmm
oooo
aaaa
cccc
aaaa
bbbb
dddd
aaaa
mmmm
bbbb
aaaa
oooo

然后面试题出现了,你会用shell吗?会,那有这么个问题,请统计出一个文件里某个单词或者行出现的次数,请去除前10条。

其实文件小还可以,文件大的话,可能这个方法就不那么高效了。不过会满足大多数

一条语句搞定

cat aaa.txt | awk '{print $1}' | sort | uniq -c | sort -n -r | head -n 5

5 aaaa
3 bbbb
2 oooo
2 mmmm
2 dddd

解释:

cat aaa.txt | awk '{print $1}' | sort

对全部输出的文件内容排序

aaaa
aaaa
aaaa
aaaa
aaaa
bbbb
bbbb
bbbb
cccc
cccc
dddd
dddd
eeee
ffff
mmmm
mmmm
oooo
oooo

uniq -c,统计各行出现的次数,并把次数打印在每行前端

sort -n -r 每行都以数字开头,按数字从达到小,排列各行

head -n 取出前几行

上一篇:javaweb常见问题解决


下一篇:80CSS3效果:bootstrap之modal