次のファイルがあります。
1 UA
2 GB
3 UA
3 UA
2 US
1 UA
4 US
2番目の列にグループ化し、最初の列に合計を計算する方法は?したがって、出力は次のようになります。
8 UA
6 US
2 GB
ベストアンサー1
そしてGNU awk
:
$ awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_desc"}
{a[$2]+=$1} END{for(k in a) print a[k], k}' ip.txt
8 UA
6 US
2 GB
バラよりgawk マニュアル: 事前定義された配列スキャン順序の使用ソートオプションの詳細をご覧ください。
そしてperl
:
perl -lane '$h{$F[1]}+=$F[0]; END{print "$h{$_} $_" for
sort {$h{$b} <=> $h{$a}} keys %h}' ip.txt