ざっくりと各カラムの合計値を出す Perl ワンライナー
2013-08-05-2
[Programming]
全行の列ごとの合計値を出すこういう Perl ワンライナー。
以下のように alias して使っています(zsh)。
実行例:
最後の行に各列の合計値がスペース区切りで出ます。数字じゃないものは0と見なされます。とにかく文字列カラムでも数値カラムでも気にせずに合計値を出しちゃいます。表題に「ざっくりと」とあるのはそのため。
ref.
- 行単位のデータをカウントしてランキングする手順[2011-02-09-2]
- gok - 各コラムの合計を計算するだけ[2003-07-10-1]
(ワンライナーにする前のバージョン)
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]
(ワンライナーにする前のバージョン)
この記事に言及しているこのブログ内の記事
