特定の列の最大値を見つけてその行レコードを印刷する方法

特定の列の最大値を見つけてその行レコードを印刷する方法

次のレコードがあります。これで、列4の最大値を見つけてそのレコード行を印刷する必要があります。

2017122600|0|0|0|0|0|0|0|0|0|0|0|0
2017122601|0|0|0|0|0|0|0|0|0|0|0|0
2017122602|0|0|0|0|0|0|0|0|0|0|0|0
2017122603|0|0|0|0|0|0|0|0|0|0|0|0
2017122604|0|0|0|0|0|0|0|0|0|0|0|0
2017122605|0|0|0|0|0|0|0|0|0|0|0|0
2017122606|0|0|0|0|0|0|0|0|0|0|0|0
2017122607|0|0|0|0|0|0|0|0|0|0|0|0
2017122608|0|0|0|0|0|0|0|0|0|0|0|0
2017122609|0|0|1|0|0|0|0|0|0|0|0|0
2017122610|0|0|0|0|0|0|0|0|0|0|0|0

予想される出力は次のとおりです。

2017122609|0|0|1|0|0|0|0|0|0|0|0|0

答え1

sort+head解決策:

sort -t'|' -k4nr file | head -1
  • -t'|'-|フィールド区切り文字として扱われます。
  • -k4nr-4番目のフィールドの番号に基づいて逆順にn並べ替えr

出力:

2017122609|0|0|1|0|0|0|0|0|0|0|0|0

答え2

awkを使用すると、次のように適しています。

awk -F'|' '$4>max{max=$4;r=$0}END{print r}' file

関連情報