Операционная система UNIX. Руководство пользователя

       

Итоговое краткое описание awk


Командная строка

awk programm filenames awk -f programm-file filenames awk -Fs sets field separator to string s awk -Ft sets separator to tab

Шаблоны

BEGIN END /regular expression/ relational expression pattern && pattern pattern pattern (pattern) !pattern pattern, pattern

Операторы управления потоком

if (expr) statement [else statement] if (subscript in array) statement [else statement] while (expr) statement for (expr; expr; expr) statement for (var in array) statement do statement while statement break cintinue next exit [expr] return [expr]

Ввод-вывод

close (filename) закрыть файл
getline установить $0 из следующей вводной записи; установить NF, NR, FNR
getline <file установить $0 из следующей записи файла; установить NF
getline var установить var из следующей вводной записи; установить NR, FNR
getline var <file установить var из следующей записи файла
print распечатать текущую запись
print expr-list распечатать выражение
print expr-list >file печать выражений в файл
printf fmt, expr-list отформатировать и распечатать
printf fmt, expr-list >file отформатировать и распечатать в файл
system (cmd-line) выполнить команду cmd-line, возвратить состояние

В print и printf >>file добавляется в file и |command - записывает в канал.

Функции

func name(parameter list) { statement } function name(parameter list) { statement } function-name(expr, expr, ...)

Функции строки



gsub(r,s,t) заменить строку s для каждого найденного регулярного выражения r в строке t; возвращает количество замен; если t опущено, то используется $0
index(s,t) возвращает индекс строки t в строке s, или 0, если нет вхождений строки t
length(s) возвращает длину строки s
match(s,r) возвращает позицию s, в которой встретилось регулярное выражение r; возвращает 0, если r не найдено
split(s,a,r) разбить строку s в массив a по регулярному выражению r; возвращает количество полей; если r опущено, то используется значение FS
sprints(fmt,expr-list) печатает expr-list в соответствии с fmt, возвращает результирующую строку
sub(r,s,t) аналогично gsub, за исключением того, что заменяется только первая найденная подстрока
substr(s,i,n)возвращает подстроку n, начинающуюся с i; если n опущено, то используется остаток s


Арифметические функции

atan2(y,x) арктангенс y/x в пределах от "-пи" до "пи"
cos(x) косинус x
exp(x) экспоненциальная функция x
int(x) целая часть x с усеченными лидирующими нулями
log(x) натуральный логарифм x
rang() случайное число между 0 и 1
sin(x) синус x
sqrt(x) квадрат x
srand(x) x - новое начальное значение для rand()
Операторы

= += -= *= /= %= ^= присвоение
?: условное выражение
логическое OR
&& логическое AND
~ !~ поиск регулярного выражения; отрицательный поиск
< <= > >= != == отношения
blank конкатенация строк
+ - сложить, вычесть
* / % умножить, разделить, режим
+ - ! унарный плюс, унарный минус, логическое отрицание
^ показательная функция ( ** является синонимом)
++ -- приращение, отрицательное приращение
$ поле
Регулярные выражения

с поиск на совпадение с немета-символом "c"
поиск буквенного символа "с"
^ поиск начала строки или последовательности строк
$ поиск конца строки или последовательности строк
. поиск любого символа, кроме символа новой строки
[s] поиск любого символа из набора "s"
[^s] поиск любого символа, отличного от "s" и символа новой строки
r* поиск ноль или больше
r+ поиск одного или больше
r? поиск ноль или один
(r) группирование: поиск r
r1r2 конкатенация: поиск r1 затем r2
r1|r2 поиск либо r1 либо r2
Встроенные переменные

ARGC число аргументов командной строки
ARGV массив аргументов командной строки
FILENAME имя текущего вводного файла
FNR номер записи в текущем файле
FS разделитель поля вводного файла; (по умолчанию - пробел)
FN число полей в текущей записи
NR число считанных на данный момент записей
OFMT выводной формат для цифр; (по умолчанию - %6.g)
OFS разделитель поля выводного файла
ORS разделитель записи выводного поля
RS разделитель записи вводного файла
RSTART индекс первого выбранного символа при помощи match(); 0 - если символ не найден
RLENGTH длина строки, выбранной при помощи match() -1 - если строка не найдена
SUBSEP разделитель индексов элементов массива; (по умолчанию - \034)

Содержание раздела