sed [duplicate] を使用して、2 つのパターン間の行を一度だけ一致させます。

sed [duplicate] を使用して、2 つのパターン間の行を一度だけ一致させます。

一方:sed -e '/pattern1/,/pattern2/!d' file.org

パターン1とパターン2の間に最初に表示される行を一致させ、残りを一致させない方法は何ですか?

たとえば、

pattern1
aaaa
pattern2
pattern1
bbb
pattern

以下を出力する必要があります。 aaa

代替ソリューション(使用grepまたはその他)を歓迎します。awk

答え1

$ cat input
a
b
c
a
b
c
$ sed -n '/a/,/c/p;/c/q' input
a
b
c

印刷したい範囲を検索し、最初の「終了」マークが表示されたら終了します。

awk始点と終点を簡単に除外できます。

$ awk 'BEGIN { p=0 }  /c/ { p=0; exit } p {print} /a/ { p=1 }' input
b

関連情報