awk 统计某个字段出现次数的topN
假设我们有一个文件data.txt,其中包含以下内容:
apple,orange,banana,apple,pear orange,pear,apple,banana,banana pear,pear,pear,orange,apple banana,apple,pear,orange,banana
我们想要统计第一个字段出现次数的top 2,可以使用以下命令:
awk -F ',' '{count[$1]++} END{for(i in count) print i, count[i]}' data.txt | sort -k2nr | head -n 2
解释一下上述命令的含义:
-
-F ','指定字段分隔符为逗号。 -
'{count[$1]++}'表示统计每个第一个字段出现的次数,使用数组count来存储。 -
END{for(i in count) print i, count[i]}表示在处理完所有行后,遍历数组count输出每个第一个字段和对应的出现次数。 -
sort -k2nr表示按照第二个字段(即出现次数)的数值大小进行降序排序。 -
head -n 2表示只输出前两行,即top 2。
输出结果为:
banana 6
apple 5
表示banana出现了6次,apple出现了5次,分别是第一和第二常出现的第一个字段
原文地址: https://www.cveoy.top/t/topic/cvKV 著作权归作者所有。请勿转载和采集!