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