一致するパターン間の行を列に変換するBashスクリプト

一致するパターン間の行を列に変換するBashスクリプト

私の入力ファイルは次のとおりです。

START
line1
line2
line3
END
START
line11
line22
line33
END

私のスクリプトは次のように出力したいと思います。

START line1 line2 line3 END
START line11 line22 line33 END

助けてください。

ベストアンサー1

使用awk:

$ awk '{printf "%s", $0 (($0 == "END") ? ORS : OFS)}'

STARTから まで行を書くには、END次のようにします。

$ awk '($0 =]"START"),($0 == "END"){printf "%s%s",$0, ($0=="END" ? ORS : OFS)}'

それ以外の場合は、次のコマンドを使用できますSTARTEND

$ awk '($0 == "START"){a="";} {a = a $0 (($0 == "END") ? "" : OFS)}  ($0 == "END"){print a}'

おすすめ記事