仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

バッチ処理のログから処理時間だけを抜粋して平均を計算

あるサーバで5分毎に実行しているバッチ処理があって、毎回の処理でどの程度の処理時間がかかっているのか、サーバの負荷と比較したときに処理時間は比例するのか……など調べていた。
細かな解析についてはスクリプトを用意してゴリゴリと解析していたんだけど、ふと処理時間の平均くらいならコマンドだけでいけそう……と思ったら余裕だった。

ちなみに、ログには細かな処理結果が出力されるので、一回の実行ごとに数十行の出力があって、その中の最終行で「time={n}sec」と、で一回ごとの処理時間も出力される。

$ egrep "time=[0-9.]+sec" hoge.log* | cut -d " " -f12 | sed -e "s/time=//g" -e "s/sec//g" | sort -n | awk 'BEGIN {sum=0;i=0} {sum+=$1;i++} END {print sum/i}'