Почему вам стоит изучить Awk в 2026 году
Это перевод оригинальной статьи Why you should learn Awk in 2026.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Awk — это уникальный инструмент. Но на самом деле существует не так много альтернатив, которые были бы столь же универсально доступны, как awk.
Что такое awk?
Awk можно использовать как программу для обработки текста в терминале. Но если с помощью sed можно выполнять основные операции, то с помощью awk можно добавлять текст, выполнять вычисления и использовать сложные условные операторы.
Потому что awk — это язык программирования.
Awk прекрасно дополняет grep и sed, и для большинства задач по обработке текста вам больше ничего не понадобится. Там, где вам пришлось бы вручную редактировать файл с помощью Vim, вы можете использовать sed и awk для программного редактирования, и, следовательно, применять одни и те же изменения к нескольким файлам без необходимости переписывать что-либо заново.
Почему стоит изучать awk
Я начал изучать awk, потому что часто видел его в скриптах вместе с sed, и во всех курсах и видеороликах упоминались оба инструмента. Поэтому, когда я захотел изучить sed (поскольку он казался проще для понимания), я решил также начать изучать awk. И я сильно недооценил возможности awk и быстро понял, что awk действительно является языком программирования с такими возможностями, как условные конструкции, циклы, массивы и многое другое.
Я изучал его, потому что хотел использовать его вместе с sed и понять, что вообще возможно.
Теперь я знаю, что могу выполнять большинство правок структурированного текста с его помощью.
Примеры
Трудно представить себе, что можно сделать, сначала не увидев несколько примеров, не так ли? Давайте рассмотрим несколько.
Небольшие примеры
Awk полезен при работе с табличными данными, например, с выводом команды ls -l, когда вам нужно получить или только имена файлов, или только права доступа. С помощью символа $ можно указать столбец, который нужно вывести в каждой строке.
ls -l | awk '{ print $9 }'Эта команда выведет имена файлов в текущем каталоге. Если использовать printf, можно вывести их в одну строку, разделённую пробелами, вместо переводов строки.
Можно также задавать условия для обработки строк.
awk -F, '$6 == "admin" {print $2, $NF}' users.csvЭтот небольшой скрипт выведет второй и последний столбцы для каждой строки в файле users.csv, определенном ниже в следующем разделе, но только для администраторов.
Как видно, даже простые однострочные команды уже могут давать более осмысленные выводы по данным или помогать на следующих этапах скрипта, например, чтобы пройтись по именам файлов в цикле
Пример awk-скрипта
Итак, представьте, что у вас есть CSV-файл, подобный этому.
id,name,email,age,country,role,signup_date,last_login,status 1,Alice Jansen,alice.jansen@example.com,28,NL,user,2023-01-14,2025-03-10,active 2,Bob de Vries,bob.devries@example.com,35,NL,admin,2022-11-03,2025-03-14,active 3,Charlie Smith,charlie.smith@example.com,22,UK,user,2024-02-20,2025-02-28,active ...
И вам нужно получить сводку статистики по пользователям. Конечно, вы можете сделать это любым удобным для вас способом, но давайте предположим, что нам нужен результат, подобный этому.
=== User Database Report === Active users: Active in US: Users under 30: 16 Total records processed: 16
Не задавайтесь вопросом зачем — просто примите это. Например, такой вывод может понадобиться в вашем CI/CD-пайплайне. Тогда можно создать awk-скрипт:
# summary.awk - Full user stats
BEGIN {
print "=== User Database Report ==="
}
NR==1 { next } # Skip header
{
if ($9 == "active") {
active++
if ($5 == "US") us_active++
}
# Simple age group
if ($4 < 30) young++
}
END {
print "Active users:", active
print "Active in US:", us_active
print "Users under 30:", young
print "Total records processed:", NR-1
}Здесь мы создаём заголовок с помощью блока BEGIN, выполняем некоторые вычисления, а в конце выводим статистику.
И всё это — в awk. Теоретически это можно записать в одну строку, но проще сохранить в файл и использовать команду awk -f summary.awk users.csv.
В данном случае вы можете убедиться, что, несмотря на то, что он обычно используется как простой инструмент командной строки, с его помощью можно создавать сложные скрипты для обработки данных.
Как научиться пользоваться Awk
Я изучал awk, проходя курс на Udemy, смотря видео на YouTube и экспериментируя самостоятельно. С тех пор я использую его в своих пайплайнах, и если у меня появляется свободное время, я могу придумать небольшую задачу и решить её с помощью sed и awk.
Также создал курс на Udemy по grep, sed и awk, поскольку эти три инструмента командной строки отлично работают вместе. Вы можете найти его здесь.
Заключение
Вместе с grep и sed awk является чрезвычайно универсальным инструментом для обработки текста. Поскольку его можно использовать программно, вы можете редактировать файлы внутри других скриптов (например, в скриптах настройки проекта). Большое спасибо за прочтение и хорошего вам дня!
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.