乗算で表される2番目の変数から最大値を持つ行を抽出する

乗算で表される2番目の変数から最大値を持つ行を抽出する

解決できないような問題があります。

次のようなタブで区切られた巨大なテキストファイルがあります。

chr 10 20 20 a
chr 30 40 10 b
chr 30 40 15 b
chr 30 40 11 b

必要なものは次のとおりです。 1)すべての一意の行を抽出する2)列5が複数回表示される場合(例:b)、列4に最大値がある行。

したがって、上記の例で必要な行は次のようになります。

10月20日20日(これはユニークな行です)
30 40 15b(5列が複数回表現される場合、4列で値が最大の行になります。

これを行う簡単な方法はありますか?

ベストアンサー1

それでは、行を5番目の列にグループ化し、各グループに最大4番目の列を持つ行を印刷しますか?

負の数がないと仮定すると、次のようになります。

$ awk '$4 > val[$5] {val[$5] = $4; line[$5] = $0} 
       END {for (x in line) print line[x] }' < foo.txt
chr 10 20 20 a       
chr 30 40 15 b

おすすめ記事