2016-03-06 45 views
-1

Can uniq -c只能得到第2列出现的次数,然后根据出现次数对它进行排序?另外,排序后,我不想显示出现次数。怎么做?Uniq -c按列排序?

这是我的例子输入:

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

是:

222222222 50 
222222222 60 
333333333 50 
333333333 60 
111111111 40 
+1

看看[问]。你有什么试过? –

+0

你的输出有点奇怪......你可以尝试为你的结果使用'sort'选项'-r'(倒序)和'-u'(uniq)..就像'sort -k2 -r input | sort -k1 -r -u',但输出与你的有点不同 – ClaudioM

+0

你的规格对我来说不是很清楚。假设您有6条额外的输入数据“111 10”,“333 10”,“222 10”,“111 10”,“222 10”,“444 10”。你会在输出结尾需要4行多行吗?依次可以接受'444 10','333 10','222 10'和'111 10'吗?如果额外材料中的条目顺序很重要,那么所需的顺序是什么(你应该记录下来)?如果输出结果应该是别的东西,那么你需要澄清你的结果。 –

回答

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各种管道输入(数字-n根据NUM根据第二 柱/键(-k 2(点)) 由空格分隔(由t开关指定))
  3. 然后awk '{print $2" "$3}'只是打印的第二和第三场 去除发生场的数目。