]]> ]]>

AWK

Дата создания:
1977
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
.awk
Реализации и версии (свернуть все | развернуть все):
Язык программирования

AWK (название происходит от первых букв фамилий авторов) — интерпретируемый скриптовый язык программирования, предназначенный для обработки текстовых данных.

Программа, написанная на AWK, принимает на вход поток текстовых данных (получаемых из файла или с консоли) и обрабатывает его построчно. Сама программа является набором правил вида “шаблон — действие”, где шаблон является регулярным выражением, а действие — последовательностью команд. При обработке входного потока каждая строка данных сравнивается с каждым шаблоном, и выполняются действия тех правил, под шаблоны которых эта строка подходит. Специальные шаблоны BEGIN и END задают действия, которые выполняются до и после обработки входного потока, соответственно.

Основным типом данных в AWK является строка (хотя числа также обрабатываются), основной структурой данных — ассоциативный массив. Язык известен также сильной поддержкой регулярных выражений.

Элементы синтаксиса:

Комментарий до конца строки #
Регистрозависимость да
Регулярное выражение идентификатора переменной [_a-zA-Z][_a-zA-Z0-9]*
Присваивание значения переменной varname = value
Объявление переменной нет
Объявление переменной с присваиванием значения нет
Группировка выражений ( ... )
Блок { ... }
Равенство a == b
Неравенство a != b
Определение функции function functionName(argname1, ..., argnameN)
Вызов функции functionName(arg1, ..., argN)
Если - то if (condition) trueBlock
Цикл for - next для диапазона целых чисел с инкрементом на 1 for (i = first; i <= last; i++) loopBody
Цикл for - next для диапазона целых чисел с декрементом на 1 for (i = last; i >= first; i--) loopBody

Примеры:

Hello, World!:

Пример для версий gawk 3.1.6, mawk 1.3.3

Печать выполняется шаблоном BEGIN, т.е. перед обработкой входных данных. Сами данные не обрабатываются.

BEGIN { print "Hello, World!" }

Факториал:

Пример для версий gawk 3.1.6, mawk 1.3.3

Используется итеративное определение факториала. Отдельные команды в пределах блока могут разделятся точками с запятой или переносами строк.

BEGIN {
    f = 1
    print "0! = " f
    for (i=1; i<17; i++) {
        f *= i
        print i "! = " f
    }
}

Числа Фибоначчи:

Пример для версий gawk 3.1.6, mawk 1.3.3

Используется итеративное определение чисел Фибоначчи. fib — ассоциативный массив, pr — строка.

BEGIN {
    fib[1] = 1
    fib[2] = 1
    for (i=3; i<17; i++)
        fib[i] = fib[i-1]+fib[i-2]
    pr = ""
    for (i=1; i<17; i++)
        pr = pr fib[i] ", "
    print pr "..." 
}

В закладки: ]]> Пиктограмма del.icio.us Пиктограмма БобрДобр.ru Пиктограмма Memori.ru Пиктограмма МоёМесто.ru ]]>