Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
AWK

AWK

Материал из Википедии — свободной энциклопедии

AWK (произносится /ɔːk/[1]) — си-подобный сценарный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам (регулярным выражениям). Может использоваться в сценариях командной строки.

Название AWK складывается из первых букв фамилий разработчиков языка — Ахо, Уайнбергера (англ. Peter J. Weinberger) и Кернигана. Первая версия была написана в 1977 году в AT&T Bell Laboratories.

Структура программы

AWK рассматривает входной поток как список записей. Каждая запись делится на поля. На основе этой информации выполняется некоторый определённый программистом алгоритм обработки. По умолчанию разделителем записей является символ новой строки (то есть записи — это то же самое, что строки), разделителем полей — символ пробела или табуляции, или последовательность таких символов. Символы-разделители можно явно определить в программе. Символ-разделитель полей можно определить и в командной строке.

AWK-программа состоит из операторов (правил), имеющих вид:

шаблон{действие}шаблон{действие}

Каждая запись поочерёдно сравнивается со всеми шаблонами, и каждый раз, когда она соответствует шаблону, выполняется указанное действие. Если шаблон не указан, то действие выполняется для любой записи. Если не указано действие, то запись выводится. В AWK также существует 2 предопределённых шаблона BEGIN и END. BEGIN выполняется до начала обработки входного потока. END — после обработки последней записи входного потока.

Действие может состоять из последовательности операторов, разделяемых точкой с запятой, переводом строки или закрывающей скобкой.

Конструкции языка

Условия

if(условие){Списокдействий1}else{Списокдействий2}

Циклы

do

do{Телоцикла}while(условие)

while

while(условие){Телоцикла}

for (индексная форма)

Цикл for в форме, ориентированной на обработку индексных массивов, имеет вид:

for(секцияинициализации;секцияусловия;секцияобновленияитератора){Телоцикла}

Пример реализации:

for(i=1;i<=NF;i++)words[tolower($i)]++

for (ассоциативная форма)

Цикл for в форме, ориентированной на обработку ассоциативных массивов, имеет вид:

for(итераторinмассив){Телоцикла}

Встроенные переменные

Примеры

«Hello world!»

BEGIN{print"Hello World!";exit}

Печать длины самой длинной строки:

{if(length($0)>max)max=length($0)}END{printmax}

Печать всех строк длиннее 80 символов:

{if(length($0)>80)print$0}

Печать всех строк, имеющих хотя бы одно поле:

NF>0

Печать количества строк в файле:

END{printNR}

Печать строк, номера которых кратны 3:

{if(FNR%3==0)print$0}

Печать остатка входной строки, следующего за первыми тремя полями:

{# поиск начала 4-го поля...match($0,/[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*/)# ...печать остатка входной строки с найденной позицииprintsubstr($0,1+RLENGTH)}

Примечания

  1. James W. Livingston (2 мая 1988). The Great awk Program is No Birdbrain. Digital Review. p. 91.

Ссылки

AWK
Изображение логотипа
Класс языкаскриптовый, процедурный, управляемый данными
Появился в1977
АвторАльфред Ахо, Питер Вайнбергер и Брайан Керниган
РазработчикАльфред Ахо, Брайан Керниган и Питер Вайнбергер[вд]
ВыпускPOSIX.1-2017
Система типов нет
Основные реализации awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (компилятор), Awka (компилятор)
Диалектыold awk oawk 1977, new awk nawk 1985, GNU Awk gawk
Испытал влияниеC, SNOBOL4, Bourne shell
Повлиял наPerl, Korn Shell (ksh93, dtksh, tksh), Lua
Логотип Викисклада Медиафайлы на Викискладе