awk#

Описание#

Интерпретатор и язык программирования awk используется для обработки и извлечения текстовых данных.

awk обрабатывает входные данные – стандартный ввод или файл – построчно, выполняя заданное действие для каждой строки/записи, которая соответствует шаблону. Если шаблон отсутствует, awk выполняет действие со всеми записями.

Все параметры awk находятся в кавычках, а действие, которое необходимо выполнить - в фигурных скобках.

Функциональные возможности интерпретатора:

  • Работа с полями: доступ к каждому полю записи через специальные переменные $1, $2, …, где $0 обозначает всю текущую запись;

  • Условные выражения: использование оператора if для выполнения действий при соблюдении заданного условия;

  • Циклы: применение циклов for и while для обработки записей или полей;

  • Ассоциативные массивы: хранение данных в виде ассоциативных массивов (хеш-таблиц) для эффективной работы со структурированными данными;

  • Функции: определение собственных функций для повторного использования кода;

  • Печать: вывод данных с помощью оператора print, который может использовать форматирование;

  • Пользовательские переменные: объявление и использование переменных для хранения значений;

  • Автоматическая переменная NR: содержит номер текущей записи (строки);

  • Автоматическая переменная NF: количество полей в текущей записи;

  • Подпрограммы: встроенные функции, такие как length(), substr(), index() и другие;

  • Команды: возможность выполнения внешних команд с использованием оператора system();

  • Сортировка: сортировка данных по различным критериям;

  • Чтение/запись файлов: открытие и закрытие файлов для чтения и записи данных;

  • Математические операции: проведение математических операций над числами;

  • Шаблоны: разделение программы на части, выполняемые при совпадении шаблона.

Установка

Интерпретатор awk устанавливается с помощью команды dnf install. Подробнее про работу пакетного менеджера DNF в разделе «Управление программными пакетами: установка, обновление, удаление».

Использование интерпретатора#

Для работы с интерпретатором используйте команду:

awk <options> '<patterns> { <action> }'

Где:

  • <options> - опции;

  • <patterns> - шаблоны;

  • <action> - действие.

Опции#

Опции интерпретатора приведены в таблице ниже.

Опции awk#

Опция

Описание

-f

Считывать данные не из стандартного вывода, а из файла

-F

Использовать для разбиение текста на колонки разделитель полей

-v

Присвоить значение переменной, например foo=bar

-d

Выводить список переменных, их типов и конечных значений в файл

-D

Включить режим отладки интерпретатора, по умолчанию ввод команд происходит интерактивно с клавиатуры

-e

Выполнить указанный код на языке awk

-o

Выводить результат работы интерпретатора в файл

-V

Выводить версию интерпретатора

Шаблоны#

Часто используемые шаблоны интерпретатора представлены в таблице ниже.

Шаблоны awk#

Шаблон

Описание

BEGIN и END

Применять шаблоны до чтения входных данных (BEGIN) или после обработки всех данных (END)

/<regular_expression>/

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

<relational_expression>

Сравнивать конкретные поля с определенными регулярными выражениями

<pattern> && <pattern>, <pattern> | | <pattern>, ! <pattern>

Шаблоны соответствуют логическим AND, OR и NOT в C

(<pattern>)

Группировать шаблоны с помощью скобок для изменения приоритета выполнения

<pattern> ? <pattern> : <pattern>

Проверять первый шаблон, а затем использовать второй шаблон при истинном значении, третий шаблон при ложном

Действия#

Часто используемые действия интерпретатора представлены в таблице ниже.

Действия awk#

Действие

Описание

print

Выводить соответствующие данных в стандартный поток вывода

printf

Форматировать и выводить данные в стандартный поток вывода

system (<command>)

Выполнить команды в системе и отобразить статус в выводе

length (<string>)

Выводить длины строки

substr (<string>, <start>, <quantity>)

Обрезать строки начиная с указанного символа и выводить результат с соответствующим количеством символов

tolower (<string>)

Выводить копии строки с переводом символов в прописные

toupper (<string>)

Выводить копии строки с переводом символов в заглавные

Если функция у действия одна, то скобки () можно не использовать.

Примеры использования#

  • Для отображения в интерпретаторе awk списка запущенных процессов, полученного при использовании ps ux, введите команду:

    ps ux | awk '{ print }'
    
  • Для отображения информации о пользователе - имени, идентификатора, идентификатора группы и др. - из файла учетных записей /etc/passwd введите команду:

    awk -F: '{ print $1,$3,$4 }' /etc/passwd
    
  • Для построчного отображения текста из условного файла test.txt введите команду:

    awk '{ print }' test.txt
    
  • Для отображения первого и третьего поля в каждой строке условного файла test.txt введите команду:

    awk '{ print $1,$3 }' test.txt
    

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

man awk

Или:

awk --help