awkの範囲パターンと一致した行がどの行であったかを知る必要があります。次の入力があるとします。
some random text
some random text START this is first line I want to match with START
some random text
some random text
some random text
some random text START this line contains another START but I dont want matched this line
some random text
some random text END this line is last of my range
some random text
... input text countinues, more range matches can be found
どのように一致させたかったか:
/START/,/END/ {
if ((index($0,"START"))) {
# do something when range starts
}
#do some other things
}
しかし、その後、インデックスが範囲の中央にある 6 行目の START と一致することに気付きました。START とインデックスの最初の一致の後にフラグを立てることを考えていますが、NR に似たグローバル変数のようなよりエレガントな方法はありますか?
編集:入力テキストが続き、より多くの範囲の一致が見つかる可能性があります。フラグを立てたり、カウントを使用した場合、範囲の終了後にフラグ/カウントをリセットする必要があります(index($0,"END")を追加)、私が望まないもの