getline
читает следующую строку и увеличивает счетчик NR
на 1. После использования getline
awk
возобновляет работу со следующей строки. Это желаемое поведение в большинстве случаев.
В моей особой ситуации мне нужно только просмотреть следующую строку, и в зависимости от ее содержимого я читаю следующую строку или мне нужно вернуться на одну строку.
Как я могу вернуться на одну строку в awk
? Я попытался установить счетчик NR
вручную на NR=NR-1
, но это не сработало. Или есть метод, который смотрит только на следующую строку, не меняя NR
?
Мне нужен просмотр вперед на одну строку. Простое сохранение строки в переменной и обращение к ней позже не работает в этом случае. Я пытаюсь реализовать грамотный инструмент программирования в awk
, где мастер-файл может содержать множество подфайлов. Такой подфайл начинается со строки типа "% file:file1"
. Конец такого файла достигается, если достигнута строка с меньшим отступом или другая строка со строкой типа "% file:file2"
.
Набор правил для всех строк, соответствующих /% file:/
, не используется, когда я уже прочитал эту строку с помощью getline. Вот почему я хотел бы сбросить NR
на предыдущую строку, тогда awk
снова прочитает строку, соответствующую /% file:/
, и будет выполнено соответствующее правило.