Утилита awk#

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

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

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

Синтаксис awk:

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

Где:

  • <options> - опции;

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

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

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

Опция

Описание

-f

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

-F

Разделитель полей, используется для разбиения текста на колонки

-v

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

-d

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

-D

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

-e

Выполнение указанного кода на языке awk

-o

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

-V

Вывод версии утилиты

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

Шаблон

Описание

BEGIN и END

Шаблоны, которые не применяются к входным данным, выполняются либо перед их чтением (BEGIN), либо после исчерпания всех входных данных (END)

/<regular_expression>/

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

<relational_expression>

Проверка, соответствуют ли определенные поля определенным регулярным выражениям

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

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

(<pattern>)

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

<pattern> ? <pattern> : <pattern>

Указание - если первый шаблон верен, то для тестирования используется второй шаблон, в противном случае - третий

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

Название

Описание

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