AWK
| Парадигма: | скриптова, процедурна, подійно-орієнтована |
|---|---|
| Розробник: | Альфред Ахо, Пітер Вайнбергер, Браян Керніган |
| Останній реліз: | IEEE Std 1003.1-2004 (POSIX) / 1985 () |
| Діалекти: | old awk oawk 1977, new awk nawk 1985, GNU Awk gawk |
| Під впливом від: | C, SNOBOL4, Bourne shell |
| Вплинула на: | Perl, Korn Shell (ksh93, dtksh, tksh), Lua |
| ОС: | Багатоплатформова |
| Сторінка інтернет: | [cm.bell-labs.com/cm/cs/awkbook/index.html] |
Awk — це мова програмування, призначена для сканування та обробки зразків. Основним застосуванням мови Awk є обробка текстових документів. Вона гарно пристосована до малих проектів, в яких необхідне форматування та обробка текстової інформації, і має деякі властивості корисні при роботі з базами даних. Її основні функції обробки текстів вийшли з сімейства інстументів подібних до Grep операційноїї системи Юнікс.
AWK був розроблений у 1970-х роках і не зазнав значних змін з середини 1980-х років, в яких був визначений основний кістяк мови, що дозволило протягом останніх десятиліть зберегти первозданну стабільність і простоту мови. Незважаючи на похилий вік, AWK досі активно використовується адміністраторами для виконання рутинних робіт, пов'язаних з парсингом різного роду текстових файлів і генерації нескладної результної статистики.
Зміст |
Структура програми на 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
|
||||||||||||||||||||||||||||||||
