5

私の質問はこれとほとんど同じですが、1つの違いがあります。3番目のタブでスコアが最も高い行を出力したい。私のデータは次のようなものです:

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

しかし、私が欲しいものを手に入れませんでした!?

4

3 に答える 3

9

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逆ソート、最高順。

-k33 列目に並べ替えます。


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
于 2012-11-27T09:42:37.583 に答える
3

同じ質問を持つ将来のユーザーのために:

コマンドに-n スイッチを導入することを忘れないでください。そうしないと-sort、値が 9999 か​​ら始まり、その後に 999 などが続くように並べ替えられます。

sort -rnk3 file

そして、最も高い値を持つ行を 1 つだけ取得する (重複を削除する) 場合は、次を使用します。

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

通常の区切り文字がある場合は、次のよう-awkに通知できます。

sort -rnk3 file | awk -F"[. ]" '!x[$2]++'
于 2012-11-27T17:02:21.983 に答える