我有一个名字和分数的列表(First,Last,Score)
我试图只打印出按数字降序排列最常出现的姓氏。
这是一个示例列表。
inisha__Ohler__1
Loralee__Hippe__5
Boyd__Leslie__8
Donnette__Cosentino__5
Viva__Bedsole__4
Jann__Banfield__3
Alan__Dionne__2
Sandee__Verdun__2
Raeann__Sweetman__3
Judson__Goers__2
Mandie__Salcedo__8
Yesenia__Bibeau__1
Doug__Petteway__9
Alejandra__Winter__9
Marquitta__Sang__7
Rusty__Rodrigue__2
Rickie__Devin__1
Marie__Elem__3
Faustina__Haltom__4
Dorthea__Ervin__4
Yesenia__Bibeau__5
Doug__Petteway__8
Alejandra__Winter__1
Marquitta__Sang__9
Rusty__Rodrigue__4
Yesenia__Bibeau__2
Doug__Petteway__4
Alejandra__Winter__3
Marquitta__Sang__6
Rusty__Rodrigue__6
Rickie__Devin__7
Marie__Elem__1
Faustina__Haltom__2
Dorthea__Ervin__4
我想用一个“|”把输出吐出来或更少。
cut -d "_" -f 3 scores | sort -r | uniq -c | sort -nr
已经可以使用了,但我正在寻找更便宜的东西。
最佳答案
我相信实现相同目标的最便宜的方法是使用 awk
进行排序,如下所示:
awk -F"__" '{ count[$2]++ } END {for (word in count) print count[word], word}' < scores | sort -r
如果你也想要这三个空格就像 uniq -c
提供给你的那样,
awk -F"__" '{ count[$2]++ } END {for (word in count) print " ", count[word], word}' < scores | sort -r
关于linux - 打印和排序输出的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096137/