(дополнено комментарием)
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/ .