ШАБЛОНЕН ЕЗИК 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. СЕЛЕКТОРИ
Тук „селектор“ трябва да се разбира като разширение на понятието „шаблон“, тъй като там, където шаблонът е посочен в командната структура, в общия случай може да се появи всеки селектор.
КОМЕНТАР. Отварящо действие в скоби " < " должна быть в строке селектора.