话说有个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 取出前几行