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