メッセージ文字列の終わりがない場合は、複数行をマージしてみてください。また、最初の行を除くすべての行からプレフィックスを削除したいと思います。
入力する:
b929e3e1-29db this is a long message that
abc074df-48a1 is continued onto multiple
dfd4c683-ab48 lines#EOM
ff513a72-570d this is a short message#EOM
980d10aa-bbed another short message#EOM
出力:
b929e3e1-29db this is a long message that is continued onto multiple lines
ff513a72-570d this is a short message
980d10aa-bbed another short message
コマンドラインで利用可能な一般的なツールを使用するのが最善です。 (例:awk、sed)
答え1
GNU awk
1の使用
gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
- レコード区切り
#EOM
文字の後に改行文字が続くように設定します。 - 改行文字の前の16進数とハイフンシーケンスを削除すると、古いRSが改行文字を食べたため、各レコードの初期シーケンスが保持されます。
$1=$1
デフォルトの出力区切り文字を使用してレコードを強制的に再評価するようにフィールドを再割り当てします。- 記録を印刷してください(
1
本当です)
テスト
$ gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
b929e3e1-29db this is a long message that is continued onto multiple lines
ff513a72-570d this is a short message
980d10aa-bbed another short message
1.理解できない理由で交換やその他の様々な調整mawk
後も動作しないようです)+
\{1,\}