AWK

Awk — це мова програмування, призначена для сканування та обробки зразків. Основним застосуванням мови Awk є обробка текстових документів. Вона гарно пристосована до малих проектів, в яких необхідне форматування та обробка текстової інформації, і має деякі властивості, корисні для роботи з базами даних. Її основні функції обробки текстів вийшли з сімейства інструментів, подібних до grep операційної системи Юнікс.

AWK розроблений у 1970-х роках і не зазнав значних змін з середини 1980-х років, в яких був визначений основний кістяк мови, що дало змогу протягом останніх десятиріч зберегти первісну стабільність і простоту мови. Незважаючи на похилий вік, AWK досі активно використовується адміністраторами для виконання рутинних робіт, пов'язаних з парсингом різного роду текстових файлів і генерації нескладної статистики.

Структура програми на AWK

Короткий довідник по POSIX AWK

«AWK — мова для обробки файлів тексту. Файл розглядається як послідовність записів, і без обумовлення кожен рядок є записом. Кожен рядок розбивається на послідовність полів, тому можна говорити про перше слово у рядку як перше поле, друге слово — друге поле і т. д.. Програма на AWK є послідовністю тверджень типу шаблон-дія. AWK читає по одному рядку за раз. Рядок сканується на відповідність кожному шаблону в програмі, і у разі збігу виконується відповідна дія.» — Альфред Ахо

Програма на AWK — послідовність пар типу шаблон-дія, що записуються як:

умова { дія }

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

Крім таких простих умов, як, наприклад, foo == 1 або /^foo/, умова може називатися BEGIN або END, що відповідає виконанню перед початком читання записів і після закінчення обробки, відповідно.

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

Приклади програм

Hello World

Звичайна програма Hello World, написана на AWK:

BEGIN { print "Hello, world!" }

Потрібно звернути увагу, що тут не потрібно явного оператора виходу exit, тому що єдиним шаблоном є BEGIN; не здійснюється також обробка аргументів командного рядка.

Вивести всі рядки з довжиною понад 80 символів

Вивести всі рядки з довжиною понад 80 символів. Зауважте, що дію не вказано явно, тож виконується дія за замовчуванням — виведення поточного рядка.

length($0) > 80

Вивести певні колонки кожного рядка

Колонки розділені пробілами. $5 — п'ята колонка.

ls -l | awk '{print $5, $9}'

Посилання

  • http://www.gnu.org/software/gawk/manual/gawk.html [Архівовано 16 вересня 2013 у Wayback Machine.]
  • п
  • о
  • р
Рівень
Низькорівневі
Високорівневі
Загального
призначення
Серверні
Запитів до баз
даних[суперечливо 1]
Розмітки та векторної
графіки[суперечливо 1]
Синхронні[en]
  • Lustre[en]
Символьних та
чисельних обчислень
Квантових обчислень
Логічні
  • Mercury[en]
  • Prolog
Академічні
Езотеричні
  1. а б Немає загальноприйнятого рішення, чи вважати усі ці мови саме мовами програмування
  • п
  • о
  • р
UNIX-команди, що запускаються в режимі командного рядка
Файлові системи:
Файли і каталоги:
Процеси:
Користувачі:
Мережа:
Тексти:
Командний рядок:
Друк:
  • lp[en]
Пошук:
Різне: