- •Лабораторна робота 3
- •Базові регулярні вираження
- •Метасимволы, використовувані в регулярних вираженнях
- •Приклади регулярних виражень
- •Приклад виконання лабораторної роботи n3 Завдання 1
- •Завдання 2
- •Завдання 3
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Вибрані команди Unix. Короткий опис:
- •Приклад виконання лабораторної роботи n4 Завдання 1
- •Завдання 1, варіант 1
- •Завдання 1, варіант 2
- •Завдання 1, варіант 3
- •Завдання 2
- •Завдання 2 варіант 1
- •Завдання 2, варіант 2
- •Завдання 2, варіант 3
- •Завдання 3
- •Завдання 3 варіант 1
- •Завдання 3 варіант 2
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Команда awk :
- •Опис шаблонів
- •Приклад виконання лабораторної роботи n5 Приклад 1-1
- •Приклад 1-2
- •Приклад 1-3
- •Приклад 2-3.1
- •Приклад 2-3.2
- •Приклад 2-3.3
- •Приклад 2-3.4
- •Варіанти індивідуальних завдань
- •Команда sh:
- •Команда env:
- •Приклад виконання лабораторної роботи n6
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Деякі приклади програмування
- •Приклад 2
- •Приклад 3
- •Варіанти індивідуальних завдань
Опис шаблонів
Шаблон являє собою РВ, укладене в символи "/.../". У мові 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 є динамічними, тобто, нові елементи додаються в масив у міру необхідності. Індексом у масиві може бути як числове, так і строкове значення.