2013年3月15日金曜日

バイナリログやスローログを見やすくするワンライナー

バイナリログやスローログを遡って更新履歴をチェックしたりする時に(個人的に)面倒なのが、
`こいつらはSQLステートメントの改行を反映するし、インデントもしっかり記録してくれる'こと。

grep -v "INSERT INTO t1"とかやっても、"VALUES"の手前で改行してインデントするような
小綺麗に書かれたコードだと上手く引っ掛けにくい。
個人的にはインデントあった方が好きだけど、大量のログを見る時には不向き。

なので1分で考えたワンライナー。

perl -e '$/="#"; while(<>) { s/[ \n\r\t]{2,}/ /g; print $_;}' | egrep -iv '^SET (TIMESTAMP|.+session\.|INSERT_ID)|^/\*|^BEGIN|^COMMIT|^DELIMITER' | grep '^[^#]' -B1


これで連続する改行なり空白なりを全部まとめて単独のスペース文字に変換できる。
grepでもawkでも自由自在。

ついでに、いつものSET TIMESTAMPやBEGIN, COMMITを弾いた上で、
コメント行以外の行とその直前のコメント行を引っこ抜いてくる。
スローログだったら-B2にすると良いかと。


…小汚いですが、1分で思い付いたのはこれくらいでした。

0 件のコメント :

コメントを投稿