Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

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 равно нулю.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют