给定一个每行一个元素的列表(偶尔有一些空行),例如:
22008
6881
6881
22008
6881
22008
22008
6881
56515
8080
8080
56515
22008
45682
45682
22008
我想获得一个输出列表,其中包含按出现次数排序的唯一项:
22008 - 6
6881 - 4
8080 - 2
45682 - 2
56515 - 2
谢谢!
您可以使用awk
和sort
。cnt使用第1列中的数字$1
作为索引。增加了++
1到数组索引每行$ 1的值。将(|
)输送到sort
。sort
第2列(-k2
)反向(-r
)
awk '/[0-9]/ {cnt[$1]++}END{for(k in cnt) print k,"- " cnt[k]}' file.txt |sort -rk2
如果删除,/[0-9]/
您还将获得空白行数作为奖励:)。
如果需要,您可以使用/^[0-9]+/
进行完全匹配;但是,正如我们$0
用来计数的,在这里并不重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句