
- •7.080403 – Програмне забезпечення автоматизованих систем
- •1 Структура файлової системи, базовий та розгорнутий перелік команд ос unix
- •1.2 Підготовка до роботи
- •1.3 Методичні вказівки до виконання роботи
- •1.3.1 Процедура віддаленої реєстрації користувача на платформі unix
- •1.3.2 Файлова система
- •1.3.3 Середовище виконання процесів
- •1.3.4 Базові команди системи
- •1.4 Порядок виконання роботи
- •1.5 Завдання
- •1.7 Контрольні запитання
- •2 Редактор VI
- •2.3.3 Команди руху маркера по екрану монітора
- •2.3.4 Команди редактора, що забезпечують перехід у режим вводу
- •2.3.6 Команди копіювання
- •2.3.7 Команди пошуку вказаної символьної конструкції або літери
- •2.4 Порядок виконання роботи
- •2.5 Завдання
- •2.7 Контрольні запитання
- •3 Shell. Змінні оболонки shell. Застосування файла .Profile
- •3.3.2 Команда echo
- •3.3.3 Змінні середовища виконання
- •3.3.4 Файл .Profile
- •3.3.5 Використання лапок
- •3.3.6.1 Позиційні змінні (параметри)
- •3.3.6.2 Літерно-цифрові змінні (користувача)
- •3.3.6.3 Раніше визначені спеціальні змінні
- •3.3.7 Переадресація вводу-виводу за допомогою дескрипторів файлів
- •3.3.8 Шаблони, підстановки
- •3.3.9 Спеціальні символи shell операторів
- •3.4 Порядок виконання роботи
- •3.5 Завдання
- •3.7 Контрольні запитання
- •4 Shell. Оператори облонки shell. Програмування в оболонці shell
- •4.1 Мета роботи
- •4.2 Підготовка до роботи
- •4.3 Методичні вказівки до виконання роботи
- •4.3.1 Оператори мови shell
- •4.3.2 Синтаксис shell
- •If список команд
- •4.3.3 Створення та організація процедури у shell
- •4.3.4 Команди підтримки та їх особливості
- •4.3.4.1 Умовна перевірка: test
- •4.3.4.2 Оцінка арифметичних виразів expr
- •4.3.4.3 Команди true і false
- •4.3.4.4 Внутрішньорядкове введення документів
- •4.3.5 Передача параметрів до процедури shell
- •4.3.6 Приклади використання команд shell
- •4.3.6.1 Використання оператора if
- •If список команд
- •If список команд
- •4.3.6.2 Використання оператора case
- •4.3.6.3 Умовні цикли while та until
- •4.3.6.4 Організація циклу для списку: for
- •4.3.6.5 Керування циклами: break та continue
- •4.3.6.6 Кінець файла та вихід
- •4.4 Порядок виконання роботи
- •4.5 Завдання
- •4.7 Контрольні запитання
- •5 Мережні протоколи tcp/ip. Протокол telnet та протокол обміну файлами ftp
- •5.3.1.1 Командний режим telnet
- •5.4 Порядок виконання роботи
- •5.5 Завдання
- •6 Awk. Програмування на мові awk
- •6.3.1 Структура програми на мові awk
- •6.3.2 Поля
- •6.3.3 Вивід на друк
- •6.3.4 Форматований висновок
- •6.3.5 Прості шаблони
- •6.3.5 Вбудовані змінні
- •6.3.6 Змінним, обумовленим користувачем
- •6.3.7 Повідомлення про помилки
- •6.3.8 Вираження
- •6.3.8.2 Відносні вираження
- •6.3.8.3 Регулярні вираження
- •6.3.8.5 Символи
- •6.3.8.6 Комбінації виражень
- •6.3.8.6 Діапазони виражень
- •6.3.8.9 Вбудовані змінні
- •6.3.8.10 Арифметичні дії
- •6.3.8.11 Змінні поля
- •6.3.8.12 Деякі лексичні угоди
- •6.3.8.13 Вивід у файли
- •6.3.8.14 Вивід у канали
- •6.4 Порядок виконання роботи
- •6.5 Завдання
- •6.7 Контрольні запитання
- •Перелік рекомендованої літератури
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
порівнює між собою перше та четверте поля рядка символів, і виводить тільки рядки, що відповідають умові.