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

6.3.3 Вивід на друк

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

{ print }

Командний рядок:

awk ‘{ print }’ countries

виводить кожний рядок файла countries, копіюючи файл у стандартний вивід. Оператор print може також використовуватися для виводу фрагментів запису; наприклад:

{ print $1, $3 }

Таким чином, результатом виконання команди

awk ‘{ print $1,$3 }’ countries

буде така послідовність рядків:

USSR 262

……......

Algeria 18

6.3.4 Форматований висновок

Форматування виводу виконується за допомогою оператора printf:

{printf format,expr1,expr2,...,exprn},

який виводить n виражень відповідно до формату, зазначеному у рядку format, наприклад:

{ printf „%10s %6d\n”, $1, $3 }

Перше поле на виводі у вигляді рядка з 10 символів (з вирівнюванням по правому краю), за яким іде поділ і третє поле, що має вигляд 6-розрядного десяткового числа, що завершується символом „новий рядок” (\n). Вивід має такий вигляд:

USSR 262

……......

Algeria 18

Сам оператор printf не генерує на виводі ніяких роздільників-рядків.

6.3.5 Прості шаблони

Програма awk працює з вираженнями трьох типів.

По-перше, з регулярними вираженнями, заснованими на порівнянні (наприклад, на рівність ==). Приклад:

$4 == „Asia”

Повний набір операцій порівняння містить у собі: >, >=, <, <=, == (дорівнює) і != (не дорівнює). Ці операції діють як для числових, так і для рядкових даних. Приклад:

$3 > 100

Другий тип виражень – регулярні вираження, використовувані для вибірки записів за значеннями окремих символів. Найпростіша форма такого вираження – рядок символів, укладених між двома похилими рисками:

/US/

Програма, що складається із цього рядка, відбирає всі рядки, що містять у будь-якому місці комбінацію суміжних символів “US”

Третій тип – два вираження, BEGIN і END, які перевіряються перед зчитуванням першої й після обробки останнього запису, відповідно. Приклад:

BEGIN { print „Countries of Asia:” }

/Asia/ { print „ „, $1 }

Результат виконання програми:

Countries of Asia:

USSR

6.3.5 Вбудовані змінні

Крім зчитування вхідного потоку й розбивки його на поля, програма awk обчислює кількість прочитаних записів і кількість полів у поточному записі; можна скористатися цими значеннями. Номер поточного запису втримується у змінній NR, кількість полів у записі – у змінній NF. Так, програма

{ print NR, NF }

виводить номер кожного рядка й кількість полів у ній, а програма

{ print NR, $0 }

виводить кожний запис із її номером.

6.3.6 Змінним, обумовленим користувачем

Крім вбудованих змінних, подібних NF і NR, мова awk дозволяє визначати користувальницькі змінні, призначені для зберігання даних, виконання арифметичних дій і т.ін. Як ілюстрація розглянемо програму обчислення загальної й середньої чисельності населення для країн, перерахованих у файлі countries.

{ sum = sum + $3 }

END { print „Total population is”, sum, „million”

print „Average population of”, NR, „countries is”,

sum/NR }

Зауваження: Перед використанням змінна sum дорівнює нулю автоматично.

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