Итоговое краткое описание 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 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) |