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

6.3.7 Повідомлення про помилки

Якщо в програмі вами допущена помилка, користувач отримає відповідне повідомлення. Наприклад, якщо ви спробуєте виконати програму

$3 < 200 { print ( $1 }

на екрані з’являться повідомлення:

awk: syntax error at source line 1

context is

$3 < 200 { print ( >>> $1 } <<<

awk: illegal statement at source line 1

1 extra (

Деякі помилки можуть виявитися під час виконання програми. Прикладом є спроба розподілу на нуль, при якій програма припинить роботу й видасть номер вхідного запису та номер рядка програми, при обробці яких виявлена помилка.

6.3.8 Вираження

В операторі типу „вираження-дія” вираження виступає критерієм, на підставі якого виробляється вибірка записів для виконання над ними відповідної дії. Розберемо різні типи виражень.

6.3.8.1 BEGIN і END

BEGIN і END – два вираження спеціального типу, що дозволяють управляти ініціалізацією й завершенням програми awk. Вираження BEGIN перевіряється перед зчитуванням першого вхідного запису, тому пов’язані з ним дії виконуються один раз перед початком зчитування. Вираження END перевіряється після закінчення введення, після обробки останнього запису.

У наведеній нижче програмі вираження BEGIN використовується для установки символу табуляції як роздільник полів та для передачі у вихідний потік заголовків стовпців. Роздільник полів запам’ятовується в убудованій змінній, іменованій FS. Оскільки значення змінної FS може бути в будь-який момент скинуто, єдиним підходящим місцем для його визначення є секція BEGIN. Другий оператор printf, виконуваний для кожного вхідного рядка, форматує вихідний потік у таблицю. Дія END виводить підсумки.

BEGIN { FS = „\t”

printf „%10s %6s %5s %s\n”,

COUNTRY”, „AREA”, „POP”, CONTINENT” }

{ printf „%10s %6d %5d %s\n”, $1, $2, $3, $4

area = area + $2; pop = pop + $3 }

END { printf „\n%10s %6d %5d\n”, „TOTAL”, area, pop }

Якщо на вході файл countries, на виході програми буде:

COUNTRY AREA POP CONTINENT

USSR 8650 262 Asia

…………......

Algeria 920 18 Africa

TOTAL 30292 2201

6.3.8.2 Відносні вираження

Вираження мовою awk може містити в собі знаки порівняння, що розділяють послідовності символів і цифр. У мові використовуються шість відносних операторів і два оператори перевірки регулярних виражень. Зміст операторів пояснюється в таблиці 8.1

Таблиця 8.1 – Оператори порівняння в мові awk

Оператор

Зміст

1

2

<

<=

менше, ніж

менше або дорівнює

Продовження табл.. 8.1

1

2

==

!=

>=

>

~

!~

дорівнює

не дорівнює

більше або дорівнює

більше, ніж

відповідає

не відповідає

Якщо обидва порівнюваних між собою операнди є числовими, виконується числове порівняння; у протилежному випадку операнди порівнюються як рядки. Так, наприклад, вираження

$3>100

означає вибірку рядків, значення третього поля в яких перевищує 100, а програма

$1 >= "S"

вибирає рядки, що починаються з однієї з букв, що належать діапазону "S-Z", а саме:

USSR 8650 262 Asia

USA 3615 219 North America

Sudan 968 19 Africa

За відсутності будь-якої іншої інформації awk трактує поля як рядки, тому програма

$1 == $4

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

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