ablog

不器用で落着きのない技術者のメモ

アクティブセッション数と statspack レポートの集計処理に使った Perl ワンライナー

こんにちは、コードゴルフ界の飛ばし屋ですw*1
自分用のメモです。

アクティブセッション数の集計に使ったもの。レコードセパレータを段落に、フィールドセパレータを改行にしています。

perl -00 -F'\n' -lane '$sum=0;map{@line=split(q/,/,$_);$sum+=$line[2]}@F;printf(qq!%s/%s %s:%s:%s\t%d\n!,unpack(q/a2a2a2a2a2/,$line[0]),$sum)' session_active.log > active_session_cnt.tsv

さらに分単位の平均を算出しています。

perl -F'\t' -lane '$F[0]=~ s/:\d{2}$// and $h->{$F[0]}->{sum}+=$F[1] and $h->{$F[0]}->{cnt}++;END{map{printf(qq/%s\t%d\n/,$_,$h->{$_}->{sum}/$h->{$_}->{cnt})}sort keys %$h}' active_session_cnt.tsv

こちらは複数の statspack レポートから db file sequential read の Avg wait (ms) の平均を算出に使ったもの。

perl -lane 'if($_ =~ /^db file sequential read/ and $#F==8){$sum+=$F[7];$cnt++;print qq/$ARGV\t$_/;close ARGV};END{print $sum/$cnt}' *.lst

*1:id:ymotongpoo さんの「こんにちは、Python界の情弱です」にインスパイアされて思いついたので言ってみたかっただけです。特にコードゴルフとか意識してコードを書いていません。