Настройка конечного автомата с использованием AWK, который включает обработку строк, когда обнаружен начальный шаблон, и либо
- отключает обработку, когда обнаружен шаблон останова (это позволяет обрабатывать более одногогруппа старт / стоп
или
выходит из сценария, когда найден шаблон остановки (это прекращает всю обработку и ускоряет процесс, когда вам ничего не нужно после шаблона остановки)
awk '/stop/ {process = 0}
process {print $1, $5}
/start/ {process = 1}' inputfile
Это можно поставитьв одной строке, но здесь я разбил его на части для облегчения чтения.
process
используется в качестве логической переменной.Если это правда, выведите пару полей из текущей строки.
/start/
и /stop/
представляют регулярные выражения для сопоставления строк, которые вы будете использовать для разделения разделов файла, который вы хотитепроцесс.Вместо этого вы можете использовать номера строк, например, вы можете изменить тест /start/
на NR == 120
, чтобы начать обработку на 120-й строке.
Если вы хотите, чтобы начальная и конечная строки были включены в обработку,просто переместите строку process
после строки /start/
и строку /stop/
, чтобы быть последними (по существу, в обратном порядке).
Как я уже показал, этот сценарий будет обрабатывать многократный запуск/ остановить блоки в файле.Если вы хотите обработать только первую (или единственную), вы можете изменить строку /stop/
на:
/stop/ {exit)