簡単なんですがねぇ。
たとえばこんなログファイルをperlで自動的に処理したいとします。
geshigeshi
Process A Start No:123
hogehoge
Process A Start No:124
hunihuni
他に似たようなキーワードがないのなら、"Process A Start"をエディタで単純検索すれば良いだけです。
ですが、複数スレッドやプロセスが走り回るシステムでは、ログが混ざることがあります。
geshiProcess A Stageshirt No:123
Process A Shogehogetart Nhunihunio:124
こういう場合、目視と手作業で『なんとかする』のも良いですが、以下のような正規表現を使えばよいだけのことです。
秀丸エディタの場合だとgrepのダイアログでこんな感じに指定します。
検索文字列に正規表現で指定します。
P.*r.*o.*c.*e.*s.*s.* .*A.* .*S.*t.*a.*r.*t
こんな冗長な記述はいやだという人もいるかもしれませんがね。
結果はこんな感じ。
「別のログに同じ文字があったら破綻するんじゃないか。たとえばProcessのcを使う、changeとかがまざったら?」というような心配をする人もおられると思いますが、とにかく限界を体感するためにも試してみてほしいです。
とにかくこれで、まざったログの中からでも目的のキーワードを自動的に洗い出すことができます。
・・・と言いたいところなのですが、実はログが混ざると改行もまざりますので、行単位で処理するgrepでは限界があったりもします。その辺は今後の課題ということで。
行単位でまざらないようにすることは簡単で、あらゆるシステムに搭載されていますが、保存容量などの制限がつきまといます。
手にできる情報を生かすための方法は探せばいろいろあります。
ですが最初は手作業でもいいと思います。目と手が慣れれば効率10倍くらいの差は簡単につきますから。この手の改善はそこからせいぜい数倍です。
コメント