Awk — цемова програмування, призначена для сканування та обробки зразків. Основним застосуванням мови Awk є обробкатекстових документів. Вона гарно пристосована до малих проєктів, в яких необхідне форматування та обробка текстової інформації, і має деякі властивості, корисні для роботи збазами даних. Її основні функції обробки текстів вийшли з сімейства інструментів, подібних доgrep операційної системиЮнікс.
AWK розроблений у 1970-х роках і не зазнав значних змін з середини 1980-х років, в яких був визначений основний кістяк мови, що дало змогу протягом останніх десятиріч зберегти первісну стабільність і простоту мови. Незважаючи на похилий вік, AWK досі активно використовується адміністраторами для виконання рутинних робіт, пов'язаних зпарсингом різного роду текстових файлів і генерації нескладної статистики.
«AWK — мова для обробки файлів тексту. Файл розглядається як послідовність записів, і без обумовлення кожен рядок є записом. Кожен рядок розбивається на послідовність полів, тому можна говорити про перше слово у рядку як перше поле, друге слово — друге поле і т. д.. Програма на AWK є послідовністю тверджень типу шаблон-дія. AWK читає по одному рядку за раз. Рядок сканується на відповідність кожному шаблону в програмі, і у разі збігу виконується відповідна дія.» —Альфред Ахо
Програма на AWK — послідовність пар типу шаблон-дія, що записуються як:
умова {дія }
деумова зазвичай є виразом, адія — послідовністю команд.Вхідні дані розділяються на записи, які без обумовлення розділяютьсясимволом нового рядка, у такий спосіб вхідні дані поділяються на рядки. Програма по черзі тестує кожен запис на відповідність кожній з умов і виконує дії, де вирази істинні.
Крім таких простих умов, як, наприклад,foo == 1 або/^foo/,умова може називатисяBEGIN абоEND, що відповідає виконанню перед початком читання записів і після закінчення обробки, відповідно.
Дія може складатися з послідовності операторів, що розділяється крапкою з комою, переведенням рядка або закриттям дужки.
Потрібно звернути увагу, що тут не потрібно явного оператора виходуexit, тому що єдиним шаблоном єBEGIN; не здійснюється також обробка аргументів командного рядка.