(дополнено комментарием)
awk
имеет возможность выбирать «диапазоны» строк, которые идеально соответствуют этой потребности, как описано в руководстве GNU-awk (gawk). (Эта функция работает в других awk
но руководство по gawk
легко связать.)
awk '/line 2A/,0'
печатает строки, начинающиеся с первой строки , совпадающей со line 2A
и продолжающейся до конца ввода, поскольку 0
- это условие, которое никогда не выполняется.
awk '/line 2A/,/A/&&!/line 2A/'
начинает печать со строки, которая соответствует line 2A
и останавливается после строки, которая соответствует A
но НЕ является line 2A
(и, следовательно, не может быть той же линией, что и начальная строка). Он начнется снова в следующей line 2A
и т. Д .; если вы хотите предотвратить это, есть несколько более сложные способы сделать это.
Если строки остановки всегда имеют какой-либо символ, отличный от 2
перед A
это можно упростить до awk '/line 2A/,/[^2]A/'
который останавливается после строки, которая соответствует любому символу, кроме 2, за которым следует A Вы можете захотеть изменить это, например, остановиться на любой-однозначной-A, отличной от 2A, но не на другой. Как, например, WHAT
; для этого может быть условие остановки ,/line [013-9]A/
.