2

ログから段落を抽出するために gawk を使用しようとしていますが、見つかったレコード区切り記号を含めたいところまで完全に機能しています。

これはコマンドです:

gawk --re-interval 'BEGIN{RS="[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}.[0-9]{1,6} \\[[A-Z]*\\]";} /983a99f8-bec6-11e1-80dd-059a821d0b73/ {print $0}' full.log 

print RT $0 を追加すると、現在の試合ではなく、次の試合の RT が出力されます。

これはいくつかのサンプルテキストです

9:08:06.899627 [DEBUG] <0.30065.3>@agent:1565 Recs to loop through:  [{agent_state,"OpenAcdAgent43","Jeff",
                            undefined,wrapup,
                            {call,"983a99f8-bec6-11e1-80dd-059a821d0b73",
                                voice,
                                {"8501112234","MorganGrimes"},
                                "9201",<0.30392.3>,[],
                                {client,"8221314","DCF",[],1340629596,
                                    1340629596},
                                [creole_general],
                                <0.30398.3>,outband,inband,inbound,10},
                            1340629658,undefined,"Default",1340629658
9:08:06.899707 [INFO] <0.168.0>@cpx_monitor:649 Down message for reference #Ref<0.0.16.137225> of <0.30064.3> due to normal

私が 9:08:06.899627 [DEBUG] できるようにしたいのは、マッチの先頭に 9:08:06.899627 [DEBUG] を追加することですが、RS はそれを取り除きます。代わりに 9:08:06.899707 [INFO] が表示されます。

ありがとう!

4

1 に答える 1

6

これは、レコード区切り文字がレコードの最後にあるためです。これ9:08:06.899627 [DEBUG]は、空のレコード9:08:06.899707 [INFO]の終わりであり、GUID正規表現に一致するレコードの終わりです。

RT前のものを保存して、保存したものを出力する必要があります。

gawk --re-interval 'BEGIN{RS="[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}.[0-9]{1,6} \\[[A-Z]*\\]";} /983a99f8-bec6-11e1-80dd-059a821d0b73/ {print savedRT, $0} {savedRT = RT}' full.log 
于 2012-06-25T23:41:23.390 に答える