2012-01-23 9 views
2

私は次の行を含むログファイルを持っている:私は達成したいのですがどのようなbashの同じ段落から行を連結するには?

VI test.log

 

    23 Jan 01:29:33.498/GLOBAL/ser: RECEIVED message from 91.x.x.x:33583: 
    INVITE sip:[email protected] SIP/2.0^M 
    Supported: ^M 
    Allow: INVITE, ACK, OPTIONS, CANCEL, BYE^M 
    Contact: sip:[email protected]:33583^M 
    Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496^M 
    Call-id: ac755ea7e10821aa8174b2e5cd51d9e6^M 
    Cseq: 1 INVITE^M 
    From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf^M 
    ax-forwards: 70^M 
    To: sip:[email protected]^M 
    Content-type: application/sdp^M 
    Content-length: 127^M 
    ^M 
    v=0^M 
    o=anonymous 1327282173 1327282173 IN IP4 91.x.x.x^M 
    s=session^M 
    c=IN IP4 91.x.x.x^M 
    t=0 0^M 
    m=audio 5856 RTP/AVP 0^M 

    23 Jan 01:29:33.499/GLOBAL/ser: SENDING message to 91.x.x.x:33583: 
    SIP/2.0 100 trying -- your call is important to us^M 
    Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496^M 
    Call-id: ac755ea7e10821aa8174b2e5cd51d9e6^M 
    Cseq: 1 INVITE^M 
    From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf^M 
    To: sip:[email protected]^M 
    Server: SSP v2.0.84^M 
    Content-Length: 0^M 
    ^M 


は次のとおりです。

 

    23 Jan 01:29:33.498/GLOBAL/ser: RECEIVED message from 91.x.x.x:33583:|INVITE sip:[email protected] SIP/2.0|Supported:|Allow: INVITE, ACK, OPTIONS, CANCEL, BYE|Contact: sip:[email protected]:33583|Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496|Call-id: ac755ea7e10821aa8174b2e5cd51d9e6|Cseq: 1 INVITE|From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf|Max-forwards: 70|To: sip:[email protected]|Content-type: application/sdp|Content-length: 127|v=0|o=anonymous 1327282173 1327282173 IN IP4 91.x.x.x|s=session|c=IN IP4 91.x.x.x|t=0 0|m=audio 5856 RTP/AVP 0 
    23 Jan 01:29:33.499/GLOBAL/ser: SENDING message to 91.x.x.x:33583:|SIP/2.0 100 trying -- your call is important to us|Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496|Call-id: ac755ea7e10821aa8174b2e5cd51d9e6|Cseq: 1 INVITE|From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf|To: sip:[email protected]|Server: SSP v2.0.84|Content-Length: 0 

同じ段落から基本的にすべての行(セッション)は "|"で連結しなければなりません。キャリッジリターンが追加され、次の段落が連結されます。新しい行はすべて、日付が&で始まることに注意してください。

これまではすべての行を連結することしかできませんでしたが、キャリッジリターンを追加することはできませんでした。どんな助けでも大歓迎です。ありがとうございました。

+0

はあなたがこれまでに試したコードを投稿することができます。 – anubhava

+0

$ \ nを|と置き換えたいと言ってもいいですか? $以外に何かを含む行に?そして、ちょうど$だけである行を削除しますか? – frankc

+0

はい、正しいですが、$は実際には見えないので、単なる復帰です –

答えて

2

あなたはそれを行うには、次のawkスクリプトを使用することができます。

awk '{if ($0 ~ /^\s*$/) {print line; line="";} else line=line $0 "|"}' file.txt 

これはパラの終了後に必ず空白行があなたの例と同じで表示されていることを想定しています。

説明:(あなたのデータは明らかではないが)これはあなたのために働くかもしれない

$0 ~ /^\s*$/ - to check if line is completely blank or only has white spaces 
if block executes when blank line appears. It prints line var and resets line to "" 
else block is concatenating line variable with the current line of file and a pipe 
+0

実際に$記号は目に見えない文字です。私は使用しました:set list。通常の状態では$は表示されません –

+0

申し訳ありません。 – anubhava

+0

あなたのコメントに基づいて私の編集した回答を確認します。 – anubhava

0

sed '1{h;d};/^[123]\?[0-9] [JFMASOND].. ..:..:..\..../{:a;x;s/\s*\n\+/|/g;s/.$//p;d};H;$ba;d' file 
23 Jan 01:29:33.498/GLOBAL/ser: RECEIVED message from 91.x.x.x:33583:|INVITE sip:[email protected] SIP/2.0|Supported:|Allow: INVITE, ACK, OPTIONS, CANCEL, BYE|Contact: sip:[email protected]:33583|Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496|Call-id: ac755ea7e10821aa8174b2e5cd51d9e6|Cseq: 1 INVITE|From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf|ax-forwards: 70|To: sip:[email protected]|Content-type: application/sdp|Content-length: 127|v=0|o=anonymous 1327282173 1327282173 IN IP4 91.x.x.x|s=session|c=IN IP4 91.x.x.x|t=0 0|m=audio 5856 RTP/AVP 0 
23 Jan 01:29:33.499/GLOBAL/ser: SENDING message to 91.x.x.x:33583:|SIP/2.0 100 trying -- your call is important to us|Via: SIP/2.0/UDP 91.x.x.x:33583;branch=z9hG4bKe65d47e555749b753faaf095c3256ec569bde77d37de66f62ff18bc40d492496|Call-id: ac755ea7e10821aa8174b2e5cd51d9e6|Cseq: 1 INVITE|From: sip:[email protected];tag=5a541f1b2fd279cd0b8af3be3f67c7cf|To: sip:[email protected]|Server: SSP v2.0.84|Content-Length: 0 
関連する問題