Скрипт awk состоит из команд.У каждой команды есть шаблон и действие:
pattern1 { action1 }
pattern2 { action2 }
Для каждой строки входных данных awk проверяет каждый шаблон и выполняет соответствующее действие, когда шаблон истинен.
Шаблон может быть опущен, и в этом случае он принимается как всегда true, и действие выполняется для каждой строки.Точно так же действие может быть опущено, и в этом случае оно принимается как print
;это позволяет вам легко использовать awk для выбора строк без их изменения.
Имея в виду эту структуру, мы можем интерпретировать приведенные примеры.Первый - это отдельное действие, которое применяется к каждой строке.Но действие не правильно сформировано - если вы удалите внешние скобки, оно станет отличным шаблоном и действием, оба из которых построены правильно.
Второй пример также применяется к каждой строке.Он берет первые два (разделенные пробелами) поля из строк, добавляет их в виде чисел и печатает результат.Снятие внешних скобок дает три шаблона без соответствующих действий и действие без шаблона.Таким образом, шаблоны - которые являются значением присваиваний и обычно истинны - имеют неявный print
, который обычно вызывается.Точно так же действие всегда вызывается, печатая значение no
.