cygwin上のgrepでログの調査を行っています。
以下のようなログに対して調査を行っています。
2015-07-19 10:54:24,297 +09:00 [2015-07-19 01:54:24,297 GMT] [1] INFO HogeCorp.SampleApp.AppContext [(null)] - 何かのログ
2015-07-19 10:54:24,313 +09:00 [2015-07-19 01:54:24,313 GMT] [1] INFO HogeCorp.SampleApp.AppContext [(null)] - --- 何かのログ ---
2015-07-19 10:54:47,261 +09:00 [2015-07-19 01:54:47,261 GMT] [1] ERROR HogeCorp.SampleApp.Forms.LoginForm [(null)] - ログインに失敗しました。 [Code=200]
HogeCorp.SampleApp.Lib.Service.ApiException: LoginFaild
場所 HogeCorp.SampleApp.Lib.Service.LoginService.<_Login>d__23.MoveNext() 場所 c:\test\TestApp\workspace\HogeCorp.SampleApp\HogeCorp.SampleApp.Lib\Service\LoginService.cs:行 86
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 HogeCorp.SampleApp.Lib.Service.LoginService.<Login>d__14.MoveNext() 場所 c:\test\TestApp\workspace\HogeCorp.SampleApp\HogeCorp.SampleApp.Lib\Service\LoginService.cs:行 30
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 HogeCorp.SampleApp.Forms.LoginForm.<_login>d__d.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 HogeCorp.SampleApp.Forms.LoginForm.<ButtonOk_Click>d__1.MoveNext()
2015-07-19 10:57:10,447 +09:00 [2015-07-19 01:57:10,447 GMT] [1] INFO HogeCorp.SampleApp.Forms.ContentsForm [(null)] - 処理が完了しました。
2015-07-19 10:58:06,026 +09:00 [2015-07-19 01:58:06,026 GMT] [1] INFO HogeCorp.SampleApp.Forms.ContentsForm [(null)] - 他にも処理が完了しました。
2015-07-19 10:58:35,052 +09:00 [2015-07-19 01:58:35,052 GMT] [1] INFO HogeCorp.SampleApp.Forms.CreateFolderForm [(null)] - 色々と完了しました。
このようなログで、3行目からの「2015-07-19 10:54:47,261」で始まるログをgrepで取得したいと考えています。
通常のgrepでは、複数行の検索方法が解らず、やむを得ずpcregrepを使用したのですが、今度は関係ない行まで検索されて困っています。
以下のようなコマンドを実行します。
$ pcregrep -M "^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3} +09:00 [\s\S]+?トレースの終わり" sample.log
以下のような結果が得られます。
2015-07-19 10:54:24,297 +09:00 [2015-07-19 01:54:24,297 GMT] [1] INFO HogeCorp.SampleApp.AppContext [(null)] - 何かのログ
2015-07-19 10:54:24,313 +09:00 [2015-07-19 01:54:24,313 GMT] [1] INFO HogeCorp.SampleApp.AppContext [(null)] - --- 何かのログ ---
2015-07-19 10:54:47,261 +09:00 [2015-07-19 01:54:47,261 GMT] [1] ERROR HogeCorp.SampleApp.Forms.LoginForm [(null)] - ログインに失敗しました。 [Code=200]
HogeCorp.SampleApp.Lib.Service.ApiException: LoginFaild
場所 HogeCorp.SampleApp.Lib.Service.LoginService.<_Login>d__23.MoveNext() 場所 c:\test\TestApp\workspace\HogeCorp.SampleApp\HogeCorp.SampleApp.Lib\Service\LoginService.cs:行 86
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
まず、1行目と2行目のログは不要なので、出ないで欲しいです。
3行目以降のログは、ちゃんと次の行まで出力して欲しいのです。
このような検索の方法をどなたかご存知無いでしょうか・・・。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/10 07:52