2番目のパターンが一致しない場合に出力を印刷しない方法

2番目のパターンが一致しない場合に出力を印刷しない方法

ファイル1:

pattern1
a
b
c
end

コマンド=>

cat file1 | sed -n '/pattern1/,/pattern2/p'

出力 =>

pattern1
a
b
c
end

2番目のパターンが一致しない場合、どのように出力を印刷できませんか?

希望の出力:

pattern1

答え1

終了 "パターン"(ひどい単語btw - 参照)が表示されるまでテキストをバッファリングする必要があります。パターンに一致するテキストを見つける方法)、たとえば、次のawkコマンドを参照してください。

$ cat file1
pattern1
a
b
c
end

$ sed -n '/pattern1/,/pattern2/p' file1
pattern1
a
b
c
end

$ awk '/pattern1/{f=1; print; buf=""; next} f{buf=buf $0 ORS; if (/pattern2/) {printf "%s", buf; f=0} }' file1
pattern1

$ awk '/pattern1/{f=1; print; buf=""; next} f{buf=buf $0 ORS; if (/end/) {printf "%s", buf; f=0} }' file1
pattern1
a
b
c
end

関連情報