
- •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.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 дорівнює нулю автоматично.