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 "..."
}
Комментарии
]]>blog comments powered by Disqus
]]>