Uniq -c按列排序?

时间:2016-03-06 14:32:11

标签: linux shell uniq

uniq -c只能获得第2列的出现次数,然后根据出现次数对其进行排序吗?此外,排序后,我不想显示出现次数。怎么做?

这是我的示例输入:

111111111 40
222222222 50
333333333 60
111111111 40
222222222 60 
333333333 50

要成为:

222222222 50
222222222 60
333333333 50 
333333333 60
111111111 40

1 个答案:

答案 0 :(得分:1)

$ cat file 
111111111 40
222222222 50
333333333 60
111111111 40
222222222 60 
333333333 50
$ sort file | uniq -c | sort -n -t ' ' -k 1 | awk '{print $2" "$3}'
222222222 50
222222222 60
333333333 50
333333333 60
111111111 40
$
  1. sort file | uniq -c按顺序为您提供3列:num(occurences) col1 col2
  2. 然后sort -n -t ' ' -k 1根据num(出现次数)对管道输入进行排序(数字-n) 根据第2个空格分隔的空格(由t开关指定) 柱/键(-k 2
  3. 然后awk '{print $2" "$3}'只打印第2和第3个字段 删除出现次数字段。