|
| ||||||||||||
| ||||||||||||
10.16. Операторы управления потоком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 равно нулю. Назад | Содержание | Вперед |
|
CITForum © 1997–2025