Мне нужно знать, какая строка соответствует шаблону диапазона с помощью 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
}
Но потом я понял, что мой индекс будет соответствовать START в строке 6 в середине диапазона. Я думаю о поднятии флага после первого совпадения START с индексом, но есть ли более элегантный способ, например, глобальная переменная, похожая на NR?
РЕДАКТИРОВАТЬ: ввод текста продолжается, можно найти больше совпадений диапазона, если бы я поднял флаг или использовал подсчет, мне пришлось бы сбросить флаг/счетчик после окончания диапазона (добавить индекс ($ 0, "END")), чего я не хочу