2017-08-04 9 views
1
sed -er '.*(textsringhere.+?(?=))(?:.*)((?>\d{4})-(?>\d{2})-(?>\d{2}) (?>\d{2}):(?>\d{2}):(?>\d{2})).* (ERROR.*)' errors.txt 

上記のコマンドをerrors.txtファイルで実行すると、そのファイルに一致するすべての行が生成されます。私は正規表現の先頭に.*を追加すると、sedはマッチする行全体を置き換えると仮定していましたか?Sedとregexの印刷のみが一致します

サンプル

入力:

 
Aug 2 16:36:37 App.Dev.thing1 839854b7-749-4f12-89e0-3ad002ab5ffe[[APP/PROC/WEB/0]] 2017-08-02 16:36:37 [main] ERROR o.s.boot.SpringApplication - Application startup failed 
Aug 2 18:04:46 App.Dev.thing2 eaedf253-df57-4c12-ade6-ea73274dbbc4[[APP/PROC/WEB/0]] 2017-08-02 18:04:46 [main] ERROR o.s.boot.SpringApplication - Application startup failed 
Aug 3 01:45:55 App.Dev.thing2 eaedf253-df57-4c12-ade6-ea73274dbbc4[[APP/PROC/WEB/0]] 2017-08-03 01:45:55 [http-nio-8080-exec-1] ERROR c.c.v.b.m.c.i.thing2 - Error Processing Batch, this batch will be consumed individually` 

予想される出力:sedを

 
App.Dev.thing1 ERROR o.s.boot.SpringApplication - Application startup failed 
App.Dev.thing2 ERROR o.s.boot.SpringApplication - Application startup failed 
App.Dev.thing2 ERROR c.c.v.b.m.c.i.thing2 - Error Processing Batch, this batch will be consumed individually` 
+0

FWIW、私も試してみました – Tony

+0

も置換のparam 'さんを追加してみました* ...... /)' – Tony

+0

に動作するように、 'grepの-o'を取得できませんでした'\ d {2 \} {\ d {\} {\} { (?> \ d {2}))。*(エラー。*)。*/\ 1/'errors.txt ' – Tony

答えて

0

シンプルアプローチ:

sed -E 's/.*(App\.\S+).+(ERROR .*)$/\1 \2/' errors.txt 

出力は:。

App.Dev.thing1 ERROR o.s.boot.SpringApplication - Application startup failed 
App.Dev.thing2 ERROR o.s.boot.SpringApplication - Application startup failed 
App.Dev.thing2 ERROR c.c.v.b.m.c.i.thing2 - Error Processing Batch, this batch will be consumed individually 
関連する問題