AWK может делать это с помощью диапазонов шаблонов, что позволяет использовать любое регулярное выражение:
echoer | awk '/pattern/,0'
напечатает вывод echoer
, начиная с первой строки, соответствующей pattern
.
AWK основан на шаблоне -и обычно используется с подходом типа «если этот шаблон соответствует, сделайте это». «Этот шаблон» может быть рядом шаблонов, определяемых как «когда этот шаблон совпадет, начните делать это, пока этот другой шаблон не совпадет»; это указывается путем написания двух шаблонов, разделенных запятой, как указано выше. Шаблоны могут быть текстовыми совпадениями, как в /pattern/
, где текущая строка сравнивается с шаблоном, интерпретируемым как регулярное выражение; они также могут быть общими выражениями, оцениваемыми для каждой строки и считающимися соответствующими, если их результат не равен -нулю или не -пуст.
В AWK,действием по умолчанию является печать текущей строки.
Собрав все это воедино, awk '/pattern/,0'
ищет строки, соответствующие pattern
, и, найдя одну, применяет действие по умолчанию ко всем строкам до тех пор, пока 0
условие не соответствует (не -нулю ). awk '/pattern/,""'
тоже подойдет.
В руководстве по Gawk содержится гораздо больше подробностей.