2016-03-06 47 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}'只是打印的第二和第三場 去除發生場的數目。