古い記事
ランダムジャンプ
新しい記事
全行の列ごとの合計値を出すこういう Perl ワンライナー。

perl -F"\s+" -aple 'map{$s[$_]+=$F[$_]}0..$#F;END{print@s}'

以下のように alias して使っています(zsh)。

alias gok='perl -F"\s+" -aple '\''map{$s[$_]+=$F[$_]}0..$#F;END{print@s}'\'

実行例:
perl -le 'for(1..100){print int(rand(10))}' | sort -n | uniq -c | gok
   7 0
   9 1
   7 2
   9 3
   9 4
  16 5
   9 6
  11 7
   8 8
  15 9
#0,100,45

perl -le 'for(1..100){print chr(50+rand(40))." ".int(rand(100))}' | gok | tail
2 68
< 8
S 7
J 9
T 25
A 2
? 22
H 17
X 28
#93,4742

最後の行に各列の合計値がスペース区切りで出ます。数字じゃないものは0と見なされます。とにかく文字列カラムでも数値カラムでも気にせずに合計値を出しちゃいます。表題に「ざっくりと」とあるのはそのため。

ref.
- 行単位のデータをカウントしてランキングする手順[2011-02-09-2]
- gok - 各コラムの合計を計算するだけ[2003-07-10-1]
(ワンライナーにする前のバージョン)