Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_lab_OSUNIX_2006-ukr.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
759.81 Кб
Скачать

6.3.1 Структура програми на мові awk

Програма на мові awk являє собою набір операторів типу „вираження-дія:

Структура: вираження {дія}

Наприклад:

$1 == „address” { print $2, $3 }

Це приклад звичайної програми на мові awk, що складається з одного оператора типу „вираження-дія”. Програма виводить на друк друге та третє поле з кожного вхідного запису, першим полем якої є „address”. У більш загальному випадку програма awk порівнює кожний вхідний рядок з кожним вираженням по черзі. Цей процес триває до вичерпання вхідного потоку.

В операторі „вираження-дія” як ліва, так і права частина можуть бути опущені. Якщо з вираженням не пов’язана будь-яка певна дія, як, наприклад:

$1 == „name”

відповідний рядок буде виведений. Якщо з дією не зазначено поруч ніякого вираження, як, наприклад:

{ print $1, $2 }

дія виконується для кожного вхідного рядка. Оскільки й права, і ліва частини оператора є необов’язковими, дії полягають у фігурних дужках, щоб їх можна було відрізнити від виражень.

Приклад використання:

awk ‘{ print $1, $2 }’ file1 file2

Слід звернути увагу на те, що оператори типу „вираження-дія” полягають в одинарних лапках. У результаті символи, подібні $, не інтерпретуватимуться shell, і програма зможе розташовуватися на декількох рядках.

Якщо в командному рядку не зазначено жодного файла, зчитування даних вироблятиметься зі стандартного пристрою уведення. Можна послатися на стандартне введення як джерело даних, зазначивши символ „дефіс” (-) замість імені одного із вхідних файлів. Наприклад:

awk ‘{ print $3,$4 }’ file1 –

Зазначений формат команди зручний у тому випадку, коли програма має невеликий розмір (кілька рядків). Якщо ж програма має більшу довжину, зручніше записати її в окремий файл і скористатися опцією –f (вибірка з файла):

awk –f файл_з_програмою необов’язковий_список_вхідних_файлів

Наприклад, для того, щоб вибрати програму з файла myprogram і виконати її над рядками, що належать файлу file1, введіть команду:

awk –f myprogram file1

6.3.2 Поля

Програма awk звичайно читає вхідний потік порядково або за одним записом; запис за замовчуванням є послідовністю символів, що завершується символом „новий рядок”. Кожний запис розбивається на поля, кожне з яких за замовчуванням є рядком символів, відмінних від пробілу й символу табуляції.

Як приклад файла, що є вхідним для більшості програм, наведених у лабораторній роботі, використовуватимемо файл countries, що містить дані про 10 найбільші країни світу. Кожний запис складається з найменування країни, розміру її площі у квадратних милях, населення в 46н.46. Чоловік і назви континенту, на якому розташована дана країна. Проміжок між полями позначається символом табуляції; пробіл є внутрішнім роздільником слів, що утворять назву континенту North/South America.

USSR 8650 262 Asia

……......

Algeria 920 18 Africa

Файл містить звичайні дані, оброблювані програмами мовою awk, - суміш слів і цифр, розбита на поля.

Кількість полів у записі визначається кількістю відповідних роздільників. Перше поле в записі йменується $1, друге - $2, і т.д. Весь запис іменується $0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]