Подтвердить что ты не робот

Как вы получаете awk для перехода к следующей строке при выполнении условия?

Я пытаюсь написать awk script, который проверяет определенные условия и выбрасывает строки, удовлетворяющие этим условиям.

Конкретным условием является выброс первых двух строк файла и любой строки, начинающейся с текста xyzzy:. С этой целью я закодировал:

awk '
    NR < 2    {}
    /^xyzzy:/ {}
              {print}'

думая, что он выбрасывает линии, где выполняется любое из этих двух условий, и печатайте иначе.

К сожалению, похоже, что print обрабатывается, даже если строка соответствует одному из двух других шаблонов.

Есть ли C-подобное действие continue, которое будет перемещаться по следующей строке, игнорируя все другие проверки условий для текущей строки?

Я полагаю, что я мог бы использовать что-то вроде ((NR > 1) && (!/^xyzzy:/)) {print} в качестве третьего правила, но для меня это кажется довольно уродливым.

Альтернативно, есть ли другой способ сделать это?

4b9b3361

Ответ 1

Используйте ключевое слово next как свое действие

Это ключевое слово часто полезно, если вы хотите перебирать более 2 файлов; иногда это тот же файл, который вы хотите обработать дважды.

Вы увидите следующую идиому:

awk '
FNR==NR {  
  < stuff that works on file 1 only >
  next
}
{
  < stuff that works on file 2 only >
}' ./infile1 ./infile2