2行を1行にマージする必要がありますstdout
。新しい行をスペース1つとスペース4つに置き換えます。空白のない新しい行に触れないでください。
tcpdump -vvv ... -l | xyz
出力は次のとおりです。
2014-06-06 AAA
BBB
2014-06-06 CCC
DDD
しかし、私は以下が必要です:
2014-06-06 AAA BBB
2014-06-06 CCC DDD
ベストアンサー1
より多くのエラー修正を提供するためにこれを編集しました。
sedの「N」コマンドは、次の行を追加します。改行と複数のスペースを変更するには、これを置き換えて使用します。
$ cat foo | sed 's/^/ /'
2014-06-06 AAA
BBB
2014-06-06 CCC
DDD
2014-06-06 EEE
2014-06-06 FFF
GGG
私の新しい答え:
$ sed ':a;$!{N;s/\n //;ba;}' foo
2014-06-06 AAA BBB
2014-06-06 CCC DDD
2014-06-06 EEE
2014-06-06 FFF GGG
これは以前の答えよりはるかに優れているようです。
$ sed '/^[^ ]/N;s/\n //' foo
2014-06-06 AAA BBB
2014-06-06 CCC DDD
2014-06-06 EEE
2014-06-06 FFF
GGG
または@mikeservがリストした美しいもの。
$ sed -n 'h;n;H;x;s/\n */ /p' foo
2014-06-06 AAA BBB
2014-06-06 CCC DDD
2014-06-06 EEE 2014-06-06 FFF
GGG