ログの解析で便利。以前は正規表現で一括置換していたが面倒なのでツールにしてみました。
例えばこんなログがあったとして、
INFO 2019-01-31 15:00:00.000 1234/process1 message
ERROR 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 4321/process3 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
例1
「キーワードを含まない行を削除」で「process1」を指定
→「process1を含まない行」を削除
INFO 2019-01-31 15:00:00.000 1234/process1 message
ERROR 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
邪魔な行を一網打尽で大変めでたい。ログ解析の場合はこれが一番活躍している。
例2
「キーワードを含む行を削除」で「process1」を指定
→「process1を含む行」を削除
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 4321/process3 message
例3
「キーワードを先頭に含まない行を削除」で「ERROR」を指定
→「ERRORで始まる行以外」を削除
ERROR 2019-01-31 15:00:00.000 1234/process1 message
注意点
このツールは単純にキーワードで絞り込みをおこなうだけなので、ログの内容次第では見たい行も削除してしまいます。
例えば以下のログに「キーワードを含まない行を削除」で「process1」を指定すると、スタックトレースの行まで削除してしまいます。
INFO 2019-01-31 15:00:00.000 1234/process1 message
ERROR 2019-01-31 15:00:00.000 1234/process1 message
com.process1.Exception
at com.hoge(hoge:2)
at com.fuga(fuga:3)
at com.piyo(piyo:5)
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 4321/process2 message
INFO 2019-01-31 15:00:00.000 4321/process3 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
ERROR 2019-01-31 15:00:00.000 1234/process1 message
com.process1.Exception
INFO 2019-01-31 15:00:00.000 1234/process1 message
INFO 2019-01-31 15:00:00.000 1234/process1 message
動きをご理解のうえ工夫してご利用ください。
ちなみに行の削除(絞り込み)は正規表現で実現しており、「キーワードを含まない行を削除」はこんな感じ。
/^(?!.*(keyword1|keyword2)).*$(\r\n|\r|\n)?/gm
正規表現は以下の記事で紹介しています。
正規表現: 条件に一致した行を削除する