パターン間の改行の除去

パターン間の改行の除去
foo
I love
Stack Exchange
bar
Some junk
lines
foo
Welcome to the
world of
Bash
bar
foo
Elon Musk
rocks

barはい、ファイルの末尾には補足項目はありません。foo

希望の出力は

I love Stack Exchange
Welcome to the world of Bash
Elon Musk rocks

^fooだから、私との間^barにあるすべての改行文字を削除してください。^fooend of filebar

ベストアンサー1

そしてawk

awk '
  $0 == "foo" {if (sep) print ""; sep = ""; inside = 1; next}
  $0 == "bar" {inside = 0; next}
  inside {printf "%s", sep $0; sep = " "}
  END {if (sep) print ""}'

foo最初の単語がある行を一致させるには;で始まる行を一致させるには、(の省略形)を$0 == "foo"置き換えます。$1 == "foo"foo/^foo/$0 ~ /^foo/

おすすめ記事