ШАБЛОНЕН ЕЗИК awk

ШАБЛОНЕН ЕЗИК awk

awk - команда за контекстно търсене и преобразуване на текст. Тя е филтър. Може да се разглежда като черупка awk в черупка черупка .

1. СТРУКТУРА НА ПРОГРАМИТЕ awk

Програмата се състои от оператори (правила) от формата:

Има два оператора от специален вид („НАЧАЛО“ - начални настройки и „КРАЙ“ - „последствия“):

2. ПРИЗОВАВАНЕ awk

Има две основни опции:

Това е най-простият случай, когато програмата (затворена в кавички "'") е в тялото на командата,
-Fc - флаг, който променя стандартния разделител на полето на "c"
файл - името на файла с изходни данни, ако той липсва - от стандартния вход. (Този формат се използва в началните примери).

дават резултат, подобен на

За да демонстрирате действието на флага "-Fc", помислете за обажданията:

Екранът ще покаже:

Първи отбор awk ще отпечата вторите полета (благодарение на позиционната променлива "$ 2") на редовете, съдържащи "преди". (Между другото, позиционната променлива "$ 0" съответства на целия ред).
Във втория случай, благодарение на флага "-F", стандартните разделители се заменят със знака "0", т.е. сега избраните редове се възприемат като разделени на следните полета:

Флагът "-f" показва това awk -програмата трябва да бъде взета от файла, чието име е посочено по-нататък (името може да бъде произволно и разширението ".awk" се добавя тук просто от естетически съображения).

3. awk ПРОМЕНЛИВИ И ИЗРАЗИ

На език awk разграничават се две групи променливи:
предварително дефинирани и декларирани в програмата. Първоначалните стойности на предварително дефинирани променливи се задават от интерпретатора awk по време на стартиране и изпълнение awk -програми.
Предварително дефинираните включват: По подразбиране:
NR номер на текущия ред;
NF е броят на полетата в текущия ред;
RS разделител на линии на входа; "\ 0"
FS сепаратор на полето на входа; интервал и/или раздел
ORS разделител на линии на изход; RS
OFS разделител на поле на изход; FS
Номер на изходния формат на OFMT; "% .6g"
Име на входния файл на FILENAME.

Потребителят може да присвоява начални стойности на други променливи. По подразбиране е "0" или празен низ (което е същото тук!).
Типове променливи:
- позиционен,
- числа с плаваща запетая,
- символен низ,
- масив.

Преводач awk третира променлива като низ, докато не стане необходимо за извършване на операции:
- ако интервал (конкатенация), тогава низове;
- ако "+", то числа с плаваща запетая.

Масивът не се декларира, но започва да съществува по време на първата употреба. Индексът на масива е всякаква ненулева стойност или низ. Масивите са асоциативни, т.е. не по изчислен индекс, а по съвпадение на съдържанието, например:

Удобно е да се използват масиви при сумиране, например записите на плащанията имат формата (файл "p-1"):

Резултат (общо кумулативно повикване):

Сравнения на числата, ако и двете числа, в противен случай - низове:
=,>

Космическа операция - конкатенация.

4. ПРИМЕРИ ЗА ПРОГРАМИ awk

5. СЕЛЕКТОРИ

Тук „селектор“ трябва да се разбира като разширение на понятието „шаблон“, тъй като там, където шаблонът е посочен в командната структура, в общия случай може да се появи всеки селектор.
КОМЕНТАР. Отварящо действие в скоби " < " должна быть в строке селектора.