Bash:複数のファイルから指定された列の最も高い値を持つ行を選択し、最も高い値を持つ行を含む出力ファイルを作成します。

Bash:複数のファイルから指定された列の最も高い値を持つ行を選択し、最も高い値を持つ行を含む出力ファイルを作成します。

以下のような名前のファイルを含むディレクトリがあります。

mi001
mi002
...
mi034
...

私がしたいのは、14列で最も高い値を見つけることです。次に、最高値を持つ行全体を出力ファイルに追加したいと思います。最終結果として、各ソースファイルの一番上の行を含む出力ファイルが必要です。

サンプルファイル

c1 c2 ... c14 c15
1 ... 5 0.5
2 ティー ... 4 0.9

ベストアンサー1

簡単な方法は、ファイルをソートし、各ファイルの最後の行を選択することです。例えば、

for file in mi*
do
    sort +13 -n $file | tail -1
done > result

+13列14をソートして-n番号順にソートします。

それでも機能しない場合は、+13ソートステートメントを次のように置き換えることができます。

sort -k14,14 -n $file | tail -1

おすすめ記事