定期的(30秒間隔など)に V$SYSSTAT の情報を sysstat.log に出力しているとして、sysstat.log から "global cache blocks lost" について、時系列で差分を求めたいといったときに使う Perl ワンライナーです。
コマンド
% perl -F, -lane '/global cache blocks lost/ and printf(qq/%s,%s\n/,$F[0],$F[2]-$tmp) and $tmp=$F[2]' sysstat.log
実行結果
0904235511,0 0904235541,1 0904235611,0 0904235642,3 0904235712,0 0904235742,5 0904235813,0 0904235843,0
参考
追記(2011/12/01):
上記のように "global cache blocks lost" などの特定の統計に絞らずに全統計について処理したい場合はこんな感じ。
% perl -F, -lane 'printf(qq/%s,%s,%s\n/,$F[1],$F[0],$F[2]-$h{$F[1]})if(exists($h{$F[1]}));$h{$F[1]}=$F[2]' sysstat.log
追記(2011/12/12):
特定の除外キーワード(アイドルイベント)を含む行以外を抽出する Perl ワンライナー。
% perl -F, -lane 'BEGIN{$i=0};s/[\n\r]*//g;if($i==0){$e{$_}++}else{exists($e{$F[1]}) or print};eof and $i=1' idle_event.txt sysstat.log