Описание тега awk
AWK - это интерпретируемый язык программирования (AWK означает Aho, Weinberger, Kernighan), предназначенный для обработки текста и обычно используемый в качестве инструмента для извлечения данных и создания отчетов. Это стандартная функция большинства Unix-подобных операционных систем.
Источник: Википедия.
Программа awk представляет собой серию пар шаблон-действие, записанных как:
condition { action }
condition { action }
...
где условие обычно является выражением, а действие - серией из одной или нескольких команд, разделенных точкой с запятой.;
характер. Ввод разбивается на записи, по умолчанию разделенные символом новой строки, и обрабатываются на основе записей (по умолчанию построчно). Для каждой записи проверяется каждое условие, и, если оно истинно, выполняется блок действия. Если условие отсутствует, блок действия будет выполнен. Если условие присутствует, но блок действий отсутствует, действие по умолчанию -print $0
который должен печатать текущую строку после любых преобразований. Поскольку ненулевое число эквивалентно истине, тоawk '1' file
инструктирует awk выполнить действие по умолчанию (print
) для каждой строки.
AWK может иметь необязательный BEGIN
и необязательно END
, где BEGIN
действие вызывается перед чтением любого ввода, и END
действие вызывается после чтения всего ввода:
BEGIN { action }
condition { action }
condition { action }
...
END { action }
Первоначально Awk был разработан Альфредом Ахо, Брайаном Керниганом и Питером Вайнбергером в 1977 году и обновлен в 1985 году. С тех пор появились различные версии и диалекты awk. Наиболее распространены:
- awk - наиболее распространенный и встречается в большинстве Unix-подобных систем. Он также имеет четко определенный стандарт IEEE.
- mawk - быстрая реализация AWK, кодовая база которой основана на интерпретаторе байтового кода.
- nawk - во время разработки AWK разработчики выпустили новую версию (new awk), чтобы избежать путаницы, но теперь она сама очень старая и не имеет функциональности, присутствующей во всех awk POSIX.
- gawk - также известен как GNU awk. Единственная версия, в которой разработчики попытались добавить поддержку i18n. Разрешено пользователям писать свои собственные разделяемые библиотеки C для расширения их собственными "плагинами". Эта версия является стандартной реализацией для Linux.
Задавая вопросы об обработке данных с помощью awk, укажите полные входные данные и желаемый результат.
Некоторые часто встречающиеся темы:
- Анализ файла CSV с помощью gawk
- Как использовать переменные оболочки в сценарии awk?
- Печать только первого поля в строке
Книги:
- Язык программирования AWK от Ахо, Керниган и Вайнбергера (ссылка на archive.org)
- Эффективный AWK, 4-е издание Роббинса (см. "Руководство пользователя GNU AWK" ниже)
- Эффективный AWK, 3-е издание Роббинса
- Sed & Awk, 2-е издание, Dougherty & Robbins
- Карманный справочник Sed & Awk, 2-е издание, Арнольд Роббинс
- AWK Language Programming - бесплатная книга
- Объяснение однострочников Awk
Ресурсы:
- Awk.Info (ссылка на archive.org)
- Руководство пользователя GNU Awk
- Спецификация POSIX для awk
- Идиоматический awk
- Сайт с учебниками по языку программирования awk
- Однострочные сообщения awk
- Awk однострочные объяснения
Другие ресурсы StackExchange:
- помечен как awk в Unix и Linux
- помечено awk в Ask Ubuntu
- помечен как awk на суперпользователе
- помечен как awk при сбое сервера