Лично я никогда не использовал бы выражение диапазона, поскольку это делает код для тривиальных вещей немного более коротким, но затем требует полного переписывания или дублирования условий при изменении ваших требований.Вместо этого я бы всегда использовал флаг:
$ awk '/start/{f=1} f || /number/{print} /end/{f=0}' file
number 1
start
line 7
line 8
line 9
end
number 2
start
line 14
line 15
line 16
end
f
для found
, а не для flag
- флаг - это тип переменной, найденный - это то, что он означает.по сравнению с изменением числа на что-то еще, вот 1 интерпретация того, что вы можете иметь в виду под этим:
$ awk '/start/{f=1} f || sub(/number/,"foobar"){print} /end/{f=0}' file
foobar 1
start
line 7
line 8
line 9
end
foobar 2
start
line 14
line 15
line 16
end