ある列をグループ化し、別の列の最大値を取得する

ある列をグループ化し、別の列の最大値を取得する

Linuxで最初の列をグループ化し、他の列を最大値にグループ化する方法はありますか?

入力例:

Manoj|2020-01-01 01:00:00
Manoj|2020-02-01 01:00:00
Manoj|2020-03-01 01:00:00
Rajesh|2020-01-01 01:00:00
Rajesh|2020-05-01 01:00:00
Suresh|2020-04-01 01:00:00

期待される出力

Manoj|2020-03-01 01:00:00
Rajesh|2020-05-01 01:00:00
Suresh|2020-04-01 01:00:00

私は参照リンクを試してみましたhttps://stackoverflow.com/questions/15397205/bash-script-find-max-group-by-and-sort-by-columnしかし、null値を取得します。どんな提案でも

ベストアンサー1

表示された順序と一致すると、次のようになります。

sort -t'|' -k1,1 -k2r file | awk -F'|' '!D[$1]++'

表示順序が重要でない場合は、次のようにします。

sort -r file | awk -F'|' '!D[$1]++'

ここで、AWKコマンドは最初のフィールドの最初の一意の値のみを表示するので、ソートにより、目的の値がグループ内で最も高い値になるように取得できます。

おすすめ記事