2つのパターン間の出力を印刷したいです。最初のパターンはファイル内で2番目に一致する必要があります。
はい -
test.txt
start one
text_1
end
start two
text_2
end
start three
text_3
end
ここで、最初のモードはstart
で、2番目のモードはですend
。パターンはstart
ファイル内の2番目のパターン一致でなければなりません。その後、出力は次のようになります
start two
text_2
end
ベストアンサー1
以下を使用してn番目のレコードにawk
簡単に拡張できます。
awk '/start/ && ++n == 2, /end/' < file
start
2番目の発生から最初の発生まで行を印刷しますend
。
2番目のstart
レコードを印刷します(、end
がある場合は順序が異なります)。start
start
end
awk '
/start/, /end/ {
if (!seen) {seen = 1; n++}
if (n == 2) print
if (/end/) seen = 0
}' < file
または:
awk '
!inside && /start/ {inside = 1; n++}
!inside {next}
n == 2
/end/ {inside = 0}' < file