我的問題與this one非常相似,但有一點區別;我希望輸出在第三個選項卡上得分最高的線。我的數據是這樣的:Bash輸出最高值的線
1.gui Qxx 16
2.gui Qxy 23
3.guT QWS 11
,我想會得到:
1.gui Qxy 23
3.guT QWS 11
我用:
cat file.f | uniq | cut -d" " -f3 | sort | uniq -d >>out.f
,但沒有得到我想要什麼!?
我的問題與this one非常相似,但有一點區別;我希望輸出在第三個選項卡上得分最高的線。我的數據是這樣的:Bash輸出最高值的線
1.gui Qxx 16
2.gui Qxy 23
3.guT QWS 11
,我想會得到:
1.gui Qxy 23
3.guT QWS 11
我用:
cat file.f | uniq | cut -d" " -f3 | sort | uniq -d >>out.f
,但沒有得到我想要什麼!?
隨着sort
:
$ sort -rk3 file # Sort on column 3, display all results
2.gui Qxy 23
1.gui Qxx 16
3.guT QWS 11
$ sort -rk3 file | head -2 # Sort on column 3, filter number of results
2.gui Qxy 23
1.gui Qxx 16
$ sort -rk3 file | uniq # Sort on column 3, on display unique results
2.gui Qxy 23
1.gui Qxx 16
3.guT QWS 11
-r
逆向排序,最高優先。
-k3
排序在第3列。
如果你只是想顯示線,第三列是比一些價值更大(即15)那就試試這個使用awk
:
awk '$3>15' file | sort -rk3 # Display line where column 3 > 15 and sort
2.gui Qxy 23
1.gui Qxx 16
對於同一個問題未來用戶:
不要忘記引入-n切換到-sort
命令,或者您的值從9999開始排序,然後是999開始等等。所以請使用
sort -rnk3 file
,如果你想獲得最高值只有一行(刪除重複項)使用此:
sort -rnk3 file | awk '!x[$2]++'
,如果你有一個常用的分隔符,你可以告訴-awk
注意:
偉大 - 我正在尋找特定的awk構造,防止重複在一個特定的領域 - 我不知道如果這可以通過bash排序來實現 - 似乎'-u'可以在整個行上運行。 – plof
你能重新檢查輸入和輸出嗎?輸出中的1.gui ...是否應該是2.gui ...? –
@ Raze2dust數字對第一個標籤不重要;他們只是爲了排除行號.. – teutara
k ..那麼你應該在輸出中將'3.guT'改爲'2.guT'。否則會令人困惑。 –