awkで各レコードの最大値のみを印刷する方法は?

awkで各レコードの最大値のみを印刷する方法は?

このような入力があります。より大きなレコード値をフィルタリングする必要があります。

猫5
犬;3
鳥;2
猫;3
犬; 6
鳥; 8

次のように出力

猫5
犬; 6
鳥; 8

答え1

以下を試してください。

#!/usr/bin/awk -f

BEGIN {
  FS = OFS = ";";
}

{
  if($2 > a[$1]) { a[$1] = $2 }
  else { a[$1] = $2 }
}

END {
  for(x in a) { print x, a[x] }
}

関連情報