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 |
|
Выводить результат работы интерпретатора в файл |
|
Выводить версию интерпретатора |
Шаблоны#
Часто используемые шаблоны интерпретатора представлены в таблице ниже.
Шаблон |
Описание |
|---|---|
|
Применять шаблоны до чтения входных данных ( |
|
Выполнить действия для каждой входной записи, которая соответствует регулярному выражению |
|
Сравнивать конкретные поля с определенными регулярными выражениями |
|
Шаблоны соответствуют логическим |
|
Группировать шаблоны с помощью скобок для изменения приоритета выполнения |
|
Проверять первый шаблон, а затем использовать второй шаблон при истинном значении, третий шаблон при ложном |
Действия#
Часто используемые действия интерпретатора представлены в таблице ниже.
Действие |
Описание |
|---|---|
|
Выводить соответствующие данных в стандартный поток вывода |
|
Форматировать и выводить данные в стандартный поток вывода |
|
Выполнить команды в системе и отобразить статус в выводе |
|
Выводить длины строки |
|
Обрезать строки начиная с указанного символа и выводить результат с соответствующим количеством символов |
|
Выводить копии строки с переводом символов в прописные |
|
Выводить копии строки с переводом символов в заглавные |
Если функция у действия одна, то скобки () можно не использовать.
Примеры использования#
Для отображения в интерпретаторе 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