Awk — це мова програмування, призначена для сканування та обробки зразків. Основним застосуванням мови Awk є обробка текстових документів. Вона гарно пристосована до малих проектів, в яких необхідне форматування та обробка текстової інформації, і має деякі властивості, корисні для роботи з базами даних. Її основні функції обробки текстів вийшли з сімейства інструментів, подібних до grep операційної системи Юнікс.
AWK | |
---|---|
Парадигма | скриптова, процедурна, подійно-орієнтована |
Дата появи | 1977 |
Творці | Альфред Ахо і Браян Керніган |
Розробник | Альфред Ахо, Пітер Вайнбергер, Браян Керніган |
Останній реліз | IEEE Std 1003.1-2004 (POSIX) / 1985 |
Діалекти | old awk oawk 1977, new awk nawk 1985, GNU Awk gawk |
Під впливом від | C, SNOBOL4, Bourne shell |
Вплинула на | Perl, (ksh93, dtksh, tksh), Lua |
Операційна система | Багатоплатформова |
Репозиторій вихідного коду | github.com/onetrueawk/awk |
Вебсайт | cm.bell-labs.com/cm/cs/awkbook/index.html |
|
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
Вивести певні колонки кожного рядка
Колонки розділені пробілами. $5
— п'ята колонка.
ls -l | awk '{print $5, $9}'
Посилання
- http://www.gnu.org/software/gawk/manual/gawk.html [ 16 вересня 2013 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Awk ce mova programuvannya priznachena dlya skanuvannya ta obrobki zrazkiv Osnovnim zastosuvannyam movi Awk ye obrobka tekstovih dokumentiv Vona garno pristosovana do malih proektiv v yakih neobhidne formatuvannya ta obrobka tekstovoyi informaciyi i maye deyaki vlastivosti korisni dlya roboti z bazami danih Yiyi osnovni funkciyi obrobki tekstiv vijshli z simejstva instrumentiv podibnih do grep operacijnoyi sistemi Yuniks AWKParadigma skriptova procedurna podijno oriyentovanaData poyavi 1977Tvorci Alfred Aho i Brayan KerniganRozrobnik Alfred Aho Piter Vajnberger Brayan KerniganOstannij reliz IEEE Std 1003 1 2004 POSIX 1985Dialekti old awk oawk 1977 new awk nawk 1985 GNU Awk gawkPid vplivom vid C SNOBOL4 Bourne shellVplinula na Perl ksh93 dtksh tksh LuaOperacijna sistema BagatoplatformovaRepozitorij vihidnogo kodu github com onetrueawk awkVebsajt cm bell labs com cm cs awkbook index html Mediafajli u Vikishovishi AWK rozroblenij u 1970 h rokah i ne zaznav znachnih zmin z seredini 1980 h rokiv v yakih buv viznachenij osnovnij kistyak movi sho dalo zmogu protyagom ostannih desyatirich zberegti pervisnu stabilnist i prostotu movi Nezvazhayuchi na pohilij vik AWK dosi aktivno vikoristovuyetsya administratorami dlya vikonannya rutinnih robit pov yazanih z parsingom riznogo rodu tekstovih fajliv i generaciyi neskladnoyi statistiki Struktura programi na AWKKorotkij dovidnik po POSIX AWK AWK mova dlya obrobki fajliv tekstu Fajl rozglyadayetsya yak poslidovnist zapisiv i bez obumovlennya kozhen ryadok ye zapisom Kozhen ryadok rozbivayetsya na poslidovnist poliv tomu mozhna govoriti pro pershe slovo u ryadku yak pershe pole druge slovo druge pole i t d Programa na AWK ye poslidovnistyu tverdzhen tipu shablon diya AWK chitaye po odnomu ryadku za raz Ryadok skanuyetsya na vidpovidnist kozhnomu shablonu v programi i u razi zbigu vikonuyetsya vidpovidna diya Alfred Aho Programa na AWK poslidovnist par tipu shablon diya sho zapisuyutsya yak umova diya de umova zazvichaj ye virazom a diya poslidovnistyu komand Vhidni dani rozdilyayutsya na zapisi yaki bez obumovlennya rozdilyayutsya simvolom novogo ryadka u takij sposib vhidni dani podilyayutsya na ryadki Programa po cherzi testuye kozhen zapis na vidpovidnist kozhnij z umov i vikonuye diyi de virazi istinni Krim takih prostih umov yak napriklad foo 1 abo foo umova mozhe nazivatisya BEGIN abo END sho vidpovidaye vikonannyu pered pochatkom chitannya zapisiv i pislya zakinchennya obrobki vidpovidno Diya mozhe skladatisya z poslidovnosti operatoriv sho rozdilyayetsya krapkoyu z komoyu perevedennyam ryadka abo zakrittyam duzhki Prikladi programHello World Zvichajna programa Hello World napisana na AWK BEGIN print Hello world Potribno zvernuti uvagu sho tut ne potribno yavnogo operatora vihodu exit tomu sho yedinim shablonom ye BEGIN ne zdijsnyuyetsya takozh obrobka argumentiv komandnogo ryadka Vivesti vsi ryadki z dovzhinoyu ponad 80 simvoliv Vivesti vsi ryadki z dovzhinoyu ponad 80 simvoliv Zauvazhte sho diyu ne vkazano yavno tozh vikonuyetsya diya za zamovchuvannyam vivedennya potochnogo ryadka length 0 gt 80 Vivesti pevni kolonki kozhnogo ryadka Kolonki rozdileni probilami 5 p yata kolonka ls l awk print 5 9 Posilannyahttp www gnu org software gawk manual gawk html 16 veresnya 2013 u Wayback Machine