2016-10-31 5 views
-1

私はいくつかのログを持っています(魔女は非常に巨大で、いくつかは1GB +を持つことができます)、私は与えられた正規表現にすべてのログを抽出できるスクリプトを作りたいと思います。regex、bash、multilineを使用してパターンのみを抽出します

ログの例は:

27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.PageFlowPageFilter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - Filtering request for path /framework/skeletons/application/setVariables.jsp 
27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.DefaultPageFlowEventReporter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - beginPageRequest: Request[email protected]18449c85, Response=org.apache.taglibs.standard.tag 
[email protected] 
<Oct 27, 2016 6:04:05 PM EEST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "185" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 185181 ms 
[ 
GET /application/appmanager/portal/myportal HTTP/1.1 
....... 
] 
> 
27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.PageFlowPageFilter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - Filtering request for path /framework/skeletons/application/setVariables.jsp 
27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.DefaultPageFlowEventReporter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - beginPageRequest: Request[email protected]18449c85, Response=org.apache.taglibs.standard.tag 
[email protected] 
<Oct 27, 2016 6:04:05 PM EEST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "185" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 185181 ms 
[ 
GET /application/appmanager/portal/myportal HTTP/1.1 
....... 
] 
> 
<Oct 27, 2016 6:04:05 PM EEST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "185" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 185181 ms 
[ 
GET /application/appmanager/portal/myportal HTTP/1.1 
....... 
] 
> 
27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.PageFlowPageFilter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - Filtering request for path /framework/skeletons/application/setVariables.jsp 
27 Oct 2016 18:04:05,215 DEBUG org.apache.beehive.netui.pageflow.DefaultPageFlowEventReporter[[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)'] - beginPageRequest: Request[email protected]18449c85, Response=org.apache.taglibs.standard.tag 
[email protected] 
<Oct 27, 2016 6:04:05 PM EEST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '120' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "185" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 185181 ms 
[ 
GET /application/appmanager/portal/myportal HTTP/1.1 
....... 
] 

私は、例えば、エラーのいくつかのタイプを検索できるように、このパターンは、設定したいと思います。

今、私はこの正規表現は、(それがファイル内の最後のマッチングに問題がある)私は必要なすべてのログをマッチングさを知っている:

.+?(?=(^\d{2}\s[A-Za-z]{3}\s\d{4}.)|(^<[A-Za-z]{3}\s\d{2},\s\d{4}\s)) 

しかし、私は、例えばのみエラーログを一致させるためにそれを言う方法がわからないです。上記の正規表現は私に(良い)ログ全体を返すが、私はそれが

おかげ

あなたが日付で始まる行を一致させたい
+1

なぜ*二*パターンマッチ通じないパイプそれを、「ERROR」を探していますか? –

+0

解凍方法や使用するコマンドがわからないこのマッチングをファイルに送るようにします – softwareRat

+0

[良い質問をどうやって得るのですか?](http://stackoverflow.com/help/how-to-ask)と[最小を作成する方法、Complete、and Verifiable example](http://stackoverflow.com/help/mcve)を参照してください。 – user3439894

答えて

2

「ERROR」のようないくつかの文字列が含まれている場合にのみマッチすることにしたいですキーワードErrorも含まれていますか?

grep -E '(^[[:digit:]]{2} [[:alpha:]]{3} [[:digit:]]{4}|^<[[:alpha:]]{3} [[:digit:]]{2}, [[:digit:]]{4}).*Error' file.log 

大文字と小文字を区別であることを-iでジャムする場合があります

grep -iE '...' file.log 
関連する問題