<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=AWK</id>
	<title>AWK - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=AWK"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=AWK&amp;action=history"/>
	<updated>2026-07-16T11:45:45Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=AWK&amp;diff=10346&amp;oldid=prev</id>
		<title>imported&gt;Alex NB OT: форматирование дат согласно Википедия:Техническое соглашение о датах и времени (обс.)</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=AWK&amp;diff=10346&amp;oldid=prev"/>
		<updated>2026-03-26T01:05:03Z</updated>

		<summary type="html">&lt;p&gt;форматирование дат согласно &lt;a href=&quot;/mediawiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0/114896312&quot; title=&quot;Служебная:Постоянная ссылка/114896312&quot;&gt;Википедия:Техническое соглашение о датах и времени&lt;/a&gt; (&lt;a href=&quot;/mediawiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0/114894365&quot; title=&quot;Служебная:Постоянная ссылка/114894365&quot;&gt;обс.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Карточка языка программирования&lt;br /&gt;
| logo = &lt;br /&gt;
| name = AWK&lt;br /&gt;
| paradigm = [[Скриптовый язык|скриптовый]], [[процедурное программирование|процедурный]], [[Программирование, управляемое данными|управляемый данными]]&lt;br /&gt;
| year = 1977&lt;br /&gt;
| latest_release_version = [https://pubs.opengroup.org/onlinepubs/9699919799/ POSIX.1-2017]&lt;br /&gt;
| designer = [[Ахо, Альфред|Альфред Ахо]], [[Вайнбергер, Питер|Питер Вайнбергер]] и [[Керниган, Брайан|Брайан Керниган]]&lt;br /&gt;
| typing = нет&lt;br /&gt;
| implementations = awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (компилятор), Awka (компилятор)&lt;br /&gt;
| dialects = &amp;#039;&amp;#039;old awk&amp;#039;&amp;#039; oawk 1977, &amp;#039;&amp;#039;new awk&amp;#039;&amp;#039; nawk 1985, &amp;#039;&amp;#039;GNU Awk&amp;#039;&amp;#039; gawk&lt;br /&gt;
| influenced_by = [[C (язык программирования)|C]], [[Снобол|SNOBOL]]4, [[Bourne shell]]&lt;br /&gt;
| influenced = [[Perl]]&amp;lt;!--1987--&amp;gt;, [[Korn Shell]] (&amp;#039;&amp;#039;ksh93&amp;#039;&amp;#039;&amp;lt;!--1993--&amp;gt;, &amp;#039;&amp;#039;dtksh&amp;#039;&amp;#039;, &amp;#039;&amp;#039;tksh&amp;#039;&amp;#039;), [[Lua]]&amp;lt;!--1993--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AWK&amp;#039;&amp;#039;&amp;#039; (произносится {{IPAc-en|ɔː|k}}&amp;lt;ref&amp;gt;{{cite magazine |magazine=Digital Review |date=1988-05-02 |page=91 |author=James W. Livingston |title=The Great awk Program is No Birdbrain}}&amp;lt;/ref&amp;gt;) — [[си (язык программирования)|си]]-подобный [[сценарный язык]] построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам ([[Регулярные выражения|регулярным выражениям]]). Может использоваться в [[Сценарий командной строки|сценариях командной строки]].&lt;br /&gt;
&lt;br /&gt;
Название AWK складывается из первых букв фамилий разработчиков языка — [[Ахо, Альфред|Ахо]], {{нп2|Уайнбергер, Питер|Уайнбергера|||Peter J. Weinberger}} и [[Керниган, Брайан Уильям|Кернигана]]. Первая версия была написана в [[1977 год]]у в [[Bell Labs|AT&amp;amp;amp;T Bell Laboratories]].&lt;br /&gt;
&lt;br /&gt;
== Структура программы ==&lt;br /&gt;
AWK рассматривает входной поток как список записей. Каждая запись делится на поля. На основе этой информации выполняется некоторый определённый программистом алгоритм обработки. По умолчанию разделителем записей является символ новой строки (то есть записи — это то же самое, что строки), разделителем полей — символ пробела или табуляции, или последовательность таких символов. Символы-разделители можно явно определить в программе. Символ-разделитель полей можно определить и в командной строке.&lt;br /&gt;
&lt;br /&gt;
AWK-программа состоит из операторов (правил), имеющих вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
шаблон {действие}&lt;br /&gt;
шаблон {действие}&lt;br /&gt;
…&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каждая запись поочерёдно сравнивается со всеми шаблонами, и каждый раз, когда она соответствует шаблону, выполняется указанное действие. Если &amp;#039;&amp;#039;шаблон&amp;#039;&amp;#039; не указан, то &amp;#039;&amp;#039;действие&amp;#039;&amp;#039; выполняется для любой записи. Если не указано &amp;#039;&amp;#039;действие&amp;#039;&amp;#039;, то запись выводится. В AWK также существует 2 предопределённых шаблона &amp;#039;&amp;#039;&amp;#039;BEGIN&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;END&amp;#039;&amp;#039;&amp;#039;. BEGIN выполняется до начала обработки входного потока. END — после обработки последней записи входного потока.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Действие&amp;#039;&amp;#039; может состоять из последовательности операторов, разделяемых точкой с запятой, переводом строки или закрывающей скобкой.&lt;br /&gt;
&lt;br /&gt;
== Конструкции языка ==&lt;br /&gt;
&lt;br /&gt;
=== Условия ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;awk&amp;quot;&amp;gt;&lt;br /&gt;
if(условие)&lt;br /&gt;
{&lt;br /&gt;
    Список действий 1&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    Список действий 2&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Циклы ===&lt;br /&gt;
==== do ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
do{&lt;br /&gt;
    Тело цикла&lt;br /&gt;
}while (условие)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== while ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
while(условие){&lt;br /&gt;
    Тело цикла&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== for (индексная форма) ====&lt;br /&gt;
Цикл for в форме, ориентированной на обработку [[Массив (программирование)|индексных массивов]], имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
for(секция инициализации;секция условия;секция обновления итератора){&lt;br /&gt;
    Тело цикла&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Пример реализации:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
        words[tolower($i)]++&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== for (ассоциативная форма) ====&lt;br /&gt;
Цикл for в форме, ориентированной на обработку [[Ассоциативный массив|ассоциативных массивов]], имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
for(итератор in массив){&lt;br /&gt;
    Тело цикла&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Встроенные переменные ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Переменная || Содержание || Значение по умолчанию &lt;br /&gt;
 |-&lt;br /&gt;
 | ARGC || Число аргументов командной строки || -&lt;br /&gt;
 |-&lt;br /&gt;
 | ARGV || Массив аргументов командной строки || -&lt;br /&gt;
 |-&lt;br /&gt;
 | ENVIRON || Массив, содержащий [[Переменная среды|переменные окружения]] || -&lt;br /&gt;
 |-&lt;br /&gt;
 | FILENAME || Обрабатываемый входной файл || -&lt;br /&gt;
 |-&lt;br /&gt;
 | FNR || Номер записи в текущем файле || -&lt;br /&gt;
 |-&lt;br /&gt;
 | FS || Разделитель полей записи на вводе || пробел(ы) и/или табуляция&lt;br /&gt;
 |-&lt;br /&gt;
 | NF || Число полей в текущей записи || -&lt;br /&gt;
 |-&lt;br /&gt;
 | NR || Номер записи (общее число считанных записей) || -&lt;br /&gt;
 |-&lt;br /&gt;
 | OFMT || Формат распечатки чисел || %.6g &lt;br /&gt;
 |-&lt;br /&gt;
 | OFS || Разделитель полей записи на выводе (символ) || пробел(ы) и/или табуляция&lt;br /&gt;
 |-&lt;br /&gt;
 | ORS || Разделитель записей на выводе AWK-программы (символ) || \0&lt;br /&gt;
 |-&lt;br /&gt;
 | RS || Разделитель записей на вводе (символ) || \0&lt;br /&gt;
 |-&lt;br /&gt;
 | RSTART ||  Позиция начала подстроки, найденной функцией &amp;lt;code&amp;gt;match&amp;lt;/code&amp;gt;&lt;br /&gt;
||-&lt;br /&gt;
 |-&lt;br /&gt;
 | RLENGTH ||  Длина подстроки, найденной функцией &amp;lt;code&amp;gt;match&amp;lt;/code&amp;gt;&lt;br /&gt;
||-&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBSEP ||  Разделитель индексов в многомерных массивах&lt;br /&gt;
||\034&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
«[[Hello world!]]»&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
BEGIN{print &amp;quot;Hello World!&amp;quot;; exit}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать длины самой длинной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
{ if (length($0) &amp;gt; max) max = length($0) }&lt;br /&gt;
END { print max }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать всех строк длиннее 80 символов:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
{ if (length($0) &amp;gt; 80) print $0 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать всех строк, имеющих хотя бы одно поле:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
NF &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать количества строк в файле:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
END { print NR }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать строк, номера которых кратны 3:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
{ if (FNR%3==0) print $0 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Печать остатка входной строки, следующего за первыми тремя полями:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=awk&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    # поиск начала 4-го поля...&lt;br /&gt;
    match($0,/[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*/)&lt;br /&gt;
    # ...печать остатка входной строки с найденной позиции&lt;br /&gt;
    print substr($0,1+RLENGTH)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{Примечания}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://www.math.spbu.ru/user/rus/cluster/Doc/Library/awk_baluev/awk_bal_oglav.shtml Эффективное программирование на языке AWK. Руководство пользователя для GNU Awk] Версия 1.0.4, апрель 1999. Arnold D. Robbins, перевод Балуева А. Н.{{ref|ru}}&lt;br /&gt;
* [lib.ru/MAN/DEMOS210/awk.txt Язык обработки структурированных текстов AWK]{{ref|ru}}&lt;br /&gt;
* [http://www.lissyara.su/?id=1077 Документация]{{ref|ru}}&lt;br /&gt;
* [http://www.gnu.org/software/gawk/gawk.html GAWK (GNU Awk)]{{ref|en}}&lt;br /&gt;
* [http://gnuwin32.sourceforge.net/packages/gawk.htm Gawk for Windows]{{ref|en}}&lt;br /&gt;
* [http://www.catonmat.net/blog/awk-nawk-and-gawk-cheat-sheet/ Awk, Nawk and GNU Awk Cheat Sheet]{{ref|en}}&lt;br /&gt;
* [http://opennet.ru/man.shtml?topic=awk&amp;amp;category=1 Интерактивная система просмотра системных руководств (man-ов)]{{ref|ru}}&lt;br /&gt;
* [http://citforum.ru/operating_systems/unixuser/gl10_1.shtml awk — язык сканирования и обработки текста] из [http://citforum.ru/operating_systems/unixuser/index.shtml Операционная система UNIX (руководство пользователя)]&lt;br /&gt;
&lt;br /&gt;
{{Команды Unix}}&lt;br /&gt;
&lt;br /&gt;
{{спам-ссылки|1=&lt;br /&gt;
* lib.ru/MAN/DEMOS210/awk.txt&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Утилиты Unix]]&lt;br /&gt;
[[Категория:Инструменты Unix для обработки текста]]&lt;br /&gt;
[[Категория:Предметно-ориентированные языки программирования]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Alex NB OT</name></author>
	</entry>
</feed>