Apache SparkのreduceByKey的な処理をbashで使いたくなることがよくある
毎回書くのは嫌なので、perlのコードをメモする。入力はTAB区切りでkey-valueの順。降順でTop20を出力:
perl -e 'my %h; while(<>) { my ($k, $v) = split("\t"); $h{$k} += $v; }; for my $k (@{[ sort { $h{$b} <=> $h{$a} } keys %h ]}[0..19]) { print join("\t", ($k, $h{$k})),"\n" }'