4

分析するテーブル形式の巨大なデータ ファイルがあります。主に 2 つの列に興味があります。1 つは英数字の名前を含み (1 列目)、もう 1 つはパーセンテージ数を含みます (3 列目)。

私の要件は、列 #3 の値に基づいてデータを逆に並べ替え、いくつかのしきい値 (>10.0) を適用し、列 #1 と列 #3 でこの基準を満たす目的の行のみを並べ替え順に表示することです。

perl通常、私はそのような要件を達成するために小さなスクリプトを書きます。しかし、ここでは、迅速かつ効率的な方法で解決するための一連の Linux コマンド (1 つのライナー) を探しています。

サンプル入力

abc12   24.5     90.0    5  
xyz23   454.23   23.5    2
aa34cd  1.345    12.34   6
uvxy    4.25     54.7    1
pqr3t   235.3    6.05    4
abcd    1.234    4.56    3

望ましい出力

abc12   90.0
uvxy    54.7
xyz23   23.5
aa34cd  12.34

この問題の解決を手伝っていただければ幸いです。

私が試したことは何ですか?

次のコマンドを使用して、列 #3 で並べ替えを逆にすることができました。次はわからない!

awk '{print $3}' test.txt | sort -rn
4

1 に答える 1

5

3 番目のフィールドが 10 より大きい場合は、1 番目と 3 番目のフィールドのみを出力し、2 番目のフィールドで数値の逆順ソートを実行します。

$ awk '$3>10{print $1,$3}' file | sort -nrk 2
abc12    90.0
uvxy     54.7
xyz23    23.5
aa34cd   12.34
于 2013-09-27T07:53:10.930 に答える