2012-11-27 4 views
5

私の質問はthis oneとよく似ていますが、1つの違いがあります。私は3番目のタブで最高得点を持つ行を出力します。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

+0

入力と出力を再確認できますか?出力の '' gui ... 'は' 'gui ...'でなければなりませんか? –

+0

@ Raze2dust最初のタブでは数字は重要ではありません。彼らは単に行番号をrepresntするには.. – teutara

+0

k ..出力で '' .guT'を '' 2.guT'に変更する必要があります。そうでなければ混乱している。 –

答えて

4

$ 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列に並べ替えます。


だけawkを使用してこれを試して、その後(すなわち15) 3列目は、いくつかの値より大きい行を表示したい場合は、次の

同じ質問と将来のユーザーのための
awk '$3>15' file | sort -rk3 # Display line where column 3 > 15 and sort 

2.gui  Qxy  23 
1.gui  Qxx  16 
+0

おかげさまで@sudo_O ..あなたが最初の行だけを取得した後に、私はすべての出現を取得したい.. – teutara

+0

事は、私のファイルは〜10millionの行を持っている、私はそれぞれの..何のために、 – teutara

+0

すべての結果を 'sort -rk3 file'とするだけの場合 –

3

-sortコマンドに-nスイッチを使用することを忘れないでください。値が9999から999の順に並べ替えられます。

を使用してください。
sort -rnk3 file 

、あなたが最も高い値を有する唯一の1行を取得したい場合(重複を除く)は、この使用します。

sort -rnk3 file | awk '!x[$2]++' 

を、あなたはいつもの区切り文字を持っている場合、あなたは気づいて-awkを伝えることができます。

​​3210
+0

偉大な - 特定のフィールドで重複を防ぐ特定のawk構造を探していた - 私は知らないもしそれがちょうどbashソートで達成できれば、 '-u'は完全な行で動作するようです。 – plof

関連する問題