awk поддерживает операторы if-else,
while, do-while аналогично языку
программирования Си.
Синтаксис оператора if:
if (выражение) оператор_1 else оператор_2
"выражение" является
условным и не имеет ограничений.
Оно может включать операторы
отношений:
<, <=, >, >=, ==, !=
регулярные выражения:
~, !~
логические операторы:
||, &&, !
операторы слияния и круглые
скобки для группирования.
В операторе if awk сначала вычисляет
"выражение". Если оно не ноль и
не пустое, то оператор_1
выполняется, в противном случае
выполняется оператор_2. Часть else не
является обязательной.
Одиночный оператор всегда может
быть заменен на набор операторов,
заключенных в скобки. Каждый
оператор в наборе отделяется от
другого символом новой строки или
точкой с запятой.
Возьмем файл countries и вычислим
максимальное население с помощью
оператора if:
{ if (maxpop < $3) {
maxpop = $3
country = $1
}
}
END { print country, maxpop }
Синтаксис оператора while:
while (выражение) оператор
Оценивается "выражение":
если оно не ноль и не пусто, то
выполняется "оператор" и
"выражение" вновь тестируется.
Цикл повторяется до тех пор, пока
"выражение" не примет значение
ноль. Например, чтобы напечатать
все поля вводного файла через
строчку:
{ i = 1
while ( i <= NF ) {
print $i
i++
}
}
Синтаксис оператора for:
for(выражение_1; выражение; выражение_2) оператор
Он аналогичен следующей
последовательности:
выражение_1
while ( выражение) {
оператор
выражение_2
}
Синтаксис оператора do:
do оператор while (выражение)
Оператор выполняется до тех пор,
пока "выражение" не станет
равным нулю. Тестирование
проводится после выполнения
"оператора", т.е. в конце цикла.
Как правило оператор do
используется реже, чем while или for.
Оператор break приводит к
немедленному выходу из while или for;
чтобы продолжить оператор, надо
начать новую итерацию.
Следующий оператор заставит awk
перейти к новой записи и начать
поиск шаблона, начиная с первого
оператора "шаблон-действие".
Оператор exit завершает программу;
ввод больше не считывается и
действие END выполняется, если оно
есть в программе.
exit expr
приводит к тому, что программа
возвращает значение "expr" как
состояние выхода. Если "expr" в
строке нет, то состояние exit равно
нулю.
|