Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (2 семестр).docx
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
193.38 Кб
Скачать

Опис шаблонів

Шаблон являє собою РВ, укладене в символи "/.../". У мові awk синтаксис базових РВ розширений наступними доповненнями:

"()" - дужки для групування РВ;

"|" - логічне "або";

"+" - плюс, що коштує за РВ, означає будь-яку послідовність входжень цього РВ, починаючи з першого;

"?" - знак питання, що коштує за РВ, означає 0 або 1 входжень цього РВ.

У шаблону також допускаються вираження відносини, які мають вигляд:

вираження операція_приналежності вираження

або

вираження операція_відношення вираження

Операції_приналежності бувають: "~" (належить) і "!~" (не належить) . Операції відносини: "==", "!=", ">", ">=", "<", "<=" - у їхньому звичайному змісті. У лівій частині таких виражень в обох випадках звичайно застосовується ім'я поля рядка, у правій, у першому випадку - шаблон, у другому - будь-яке вираження.

Допускається логічна комбінація шаблонів з використанням операцій "&&", "||", "!".

Комбінація виду:

шаблон1, шаблон2

означає застосування дій, що задаються з даними шаблонами, до рядка, що задовольняє шаблону1, і далі - до всіх наступних за нею рядкам, аж до появи рядка, що задовольняє шаблону2, включно.

У мові awk передбачено два спеціальні шаблони - BEGIN і END. Перший описує дії, виконувані перед початком читання файлу, другий - дії, виконувані після закінчення читання.

Дії

Мова опису дій awk майже ідентичний мові програмування C.

Операції:

+ - * / %

++ -- у постфиксной і префиксной формах

= += -= *= /= % =

< <= > >= == !=

! && ||

Оператор, остання операція в якому є операцією присвоювання, є оператором присвоювання.

Оператори, що управляють потоком обчислення:

if (умова) оператор

[else оператор]

while (умова) оператор

for (вираження; умова; вираження) оператор

на відміну від мови C, у вираженнях циклу for не допускається

перерахування через кому

break

continue

next негайний перехід до наступного рядка файлу

exit вихід із програми

Оператори виводу:

  • print список_виражень виводить значення виражень, перерахованих у списку ( через пробіл).

  • printf (...) - повний аналог однойменної функції мови C.

Оператор завершується символом ";" або перекладом рядка. Якщо оператор буде продовжений на наступному рядку, перший рядок повинна завершуватися символом "\"

Будь-яка послідовність операторів, укладена у фігурні дужки "{ ... }" є складеним оператором.

Коментар має той же вид, що й у мові C: "/* ... */", на відміну від З, коментарі можна вставляти тільки між операторами, але не в середину оператора.

Функції:

 length(arg)

Повертає довжину arg. Якщо arg не зазначений, то видає довжину поточного рядка.

 exp(), log(), sqrt()

Математичні функції: експонента, логарифм, квадратний корінь.

 int()

Повертає целую частина числа.

 substr(s,m,n)

Повертає подстроку рядка s, починаючи з позиції m, усього n символів. Якщо n не задане - до кінця рядка.

 index(s,t)

Повертає початкову позицію подстроки t у рядку s. (Або 0, якщо t в s не втримується.)

 sprintf(fmt,exp1,exp2,...)

Форматированная печатка в рядок, ідентично printf().

 split(s,array,sep)

Поміщає поля рядка s у масив array і повертає число заповнених елементів масиву. Якщо зазначений sep, то при аналізі рядка він розуміється як роздільник.

Мова програмування awk допускає використання:

  • полів;

  • стандартних змінних;

  • користувацьких змінних;

  • масивів.

Посилання на поля оброблюваного рядка можливі по іменам: $1, $2, $3 ... Ім'я $0 - посилання на весь рядок.

У мові awk визначені наступні стандартні змінні:

 FILENAME    

Ім'я поточного оброблюваного файлу

 FS

Роздільник полів у вхідному рядку

 NF

Число полів у вхідному рядку

 NR

Номер поточної вхідного рядка

 OFS

Роздільник полів у вихідному рядку

 ORS

Роздільник записів у вихідному файлі

Користувацькі змінні не вимагають оголошення, вони автоматично оголошуються тільки вони з'являться в програмі. Змінні можуть інтерпретуватися як числові або строкові, інтерпретація виконується залежно від контексту використання змінної.

Масиви також не оголошуються, а ухвалюють значення з контексту. Масиви в скрипте awk є динамічними, тобто, нові елементи додаються в масив у міру необхідності. Індексом у масиві може бути як числове, так і строкове значення.