Кіріспе

Бағдарламалау тілі AWK (/ɔː//k/) — бағдарламалау тілі және Unix сияқты операциялық жүйелердің көпшілігіндегі стандартты мүмкіндік. AWK тілі — деректермен басқарылатын скрипт тілі, мәтіндік деректер ағынына қатысты орындалатын әрекеттер жиынтығынан тұрады. Бұл файлдарда тікелей орындалуы мүмкін немесе мәтінді алу немесе түрлендіру мақсатында құбырдың бөлігі ретінде қолданылуы мүмкін, мысалы, пішімделген есептерді жасау. Тіл кеңінен жолдар дерек типін, ассоциативтік массивтерді (яғни, кілттік жолдармен индексацияланған массивтерді) және тұрақты өрнектерді пайдаланады. AWK шектеулі қолданыс саласына ие және біржолғы бағдарламаларды қолдау үшін әсіресе жасалған болса да, тіл Тьюринг толық және тіпті AWK-ның алғашқы Bell Labs қолданушылары көбінесе жақсы құрылымдалған үлкен AWK бағдарламаларын жазды. AWK 1970-ші жылдары Bell Labs-те құрылды, ал оның атауы авторларының тегінен шыққан: Альфред Ахо (egrep авторы), Питер Вайнбергер (кішкентай реляциялық деректер базаларында жұмыс істеген) және Брайан Керниган. Акроним AWK бағдарламалау тілінің мұқабасында бейнеленген құс түрінің атауымен бірдей айтылады. 7-ші Unix нұсқасында пайда болған алғашқы құралдардың бірі ретінде AWK, стандартты Unix ортасында қол жетімді жалғыз скрипт тілі — Bourne shell-ден басқа Unix құбыр желісіне есептеу мүмкіндіктерін қосты. Бұл Single UNIX Specification-тің міндетті құралдарының бірі және Linux Standard Base спецификациясымен талап етіледі. 1983 жылы AWK, Bell Laboratories лицензиясы бойынша Charles River Data Systems-тің UNOS операциялық жүйесі үшін қол жетімді бірнеше UNIX құралдарының бірі болды. AWK 1985–88 жылдары айтарлықтай қайта қаралып, кеңейтілді, нәтижесінде Пол Рубин, Джей Фенласон және Ричард Столлман жазған GNU AWK іске асырылуы 1988 жылы жарық көрді. GNU AWK 1994 жылдан бері тек Арнольд Роббинспен күтіліп келеді. Брайан Керниганның nawk (New AWK) бастапқы коды алғаш рет 1993 жылы жарияланбастан шығарылды және 1990-дардың соңынан бері көпшілікке жарияланды; көптеген BSD жүйелері GPL лицензиясынан қашу үшін оны пайдаланады. AWK бағдарламасы — бұл үлгі-әрекет жұптарының тізімі, келесідей жазылған:

condition { action }
condition { action }

мұнда condition әдетте өрнек, ал action — командалар тізімі. Кіріс жазбаларға бөлінеді, әдепкі бойынша жазбалар жаңа жол таңбаларымен бөлінеді, сондықтан кіріс жолдарға бөлінеді. Бағдарлама әр жазбаны әрбір condition-мен салыстырып, әрбір дұрыс өрнек үшін action-ды орындайды. Condition немесе action алынып тасталуы мүмкін. Condition әдепкі бойынша әрбір жазбаға сәйкес келеді. Әдепкі action — жазбаны басып шығару. Бұл sed-тегідей бірдей үлгі-әрекет құрылымы. Foo == 1 немесе /^foo/ сияқты қарапайым AWK өрнегінен басқа, condition BEGIN немесе END болуы мүмкін, бұл барлық жазбалар оқылғаннан бұрын немесе кейін action-ды орындауға мүмкіндік береді, немесе pattern1, pattern2, бұл pattern1-ге сәйкес келетін жазбадан бастап pattern2-ге сәйкес келетін жазбаға дейін жазбалар диапазонына сәйкес келеді, содан кейін келесі жолдарда pattern1-ге сәйкес келуге тырысады. Қарапайым арифметикалық және логикалық операторлардан басқа, AWK өрнектері тұрақты өрнекті жолмен сәйкестіретін tilde операторын (~ ) қамтиды. Құлайтын синтаксистік қант ретінде /regexp/ тильда операторын пайдаланбастан ағымдағы жазбаға сәйкес келеді; бұл синтаксис sed-ден алынған, ол өз кезегінде оны ed редакторынан мұра еткен, онда / іздеу үшін қолданылады. Регламенттік өрнектерді бөлу үшін кескіштерді пайдаланудың бұл синтаксисі кейіннен Perl және ECMAScript қабылдады және қазір кең таралған. Tilde операторы да Perl-де қабылданды.

Командалар

AWK командалары – жоғарыдағы мысалдарда әрекет орнына қойылатын операторлар. AWK командалары функцияларды шақыру, айнымалыларға мән беру, есептеулер жасау немесе олардың кез келген комбинациясын қамтуы мүмкін. AWK көптеген функцияларды қолдауға ендірілген; ал көптеген басқалары AWK-ның түрлі нұсқаларында ұсынылады. Сонымен қатар, кейбір нұсқалары динамикалық байланысты кітапханаларды қосуды қолдайды, олар артық функцияларды ұсынуы мүмкін.