開始パターンと終了パターンを使用した複数行の接続

開始パターンと終了パターンを使用した複数行の接続

次のファイルがあります。

method AAA one (1,111):
   some_text_1
method BBB two (2,
   222):
   tuesday
method CCC three (3,
    333):
   sunny_day
method DDD four (4,
    444_a,
    444_b):
   last_week

私はそれが次のように見えるようにしたいです:

method AAA one (1,111):
   some_text_1
method BBB two (2,222):
   tuesday
method CCC three (3,333):
   sunny_day
method DDD four (4,444_a,444_b):
   last_week

ほとんどそのようなことをするsedコマンドがあります:

sed -i '/method/,/):/ p; :a; N; $!b a; s/\n\s\{1,\}//g' file.txt

次の出力が提供されます。

method AAA one (1,111):
method AAA one (1,111):some_text_1
method BBB two (2,222):tuesday
method CCC three (3,333):sunny_day
method DDD four (4,444_a,444_b): last_week

ベストアンサー1

に基づいてSed 1行コマンドの詳細な説明、パート1:ファイル間隔、番号付け、テキスト変換および置換39. 行がバックスラッシュ「\」で終わったら、次の行に追加します。ただし、バックスラッシュをコンマに変更し、次のスペースを含むように置換を展開します。

$ sed -e :a -e '/,$/N; s/,\n[[:blank:]]*/,/; ta' file
method AAA one (1,111):
   some_text_1
method BBB two (2,222):
   tuesday
method CCC three (3,333):
   sunny_day
method DDD four (4,444_a,444_b):
   last_week

おすすめ記事