Помогаем ИТ-директорам, DevOps и системным инженерам снижать TCO и поднимать SLA. Кейсы, инструменты и гайды.
Сайт:
https://cortel.cloud
Cотрудничество:
@ivan_cmo
Post #2785
1.35K

🖥 AWK — мощный язык обработки текста, заточенный под построчный разбор данных по колонкам.
Назван по фамилиям создателей (Aho, Weinberger, Kernighan). Незаменим там, где нужно вытащить, отфильтровать или пересчитать данные из таблиц, логов и вывода других утилит.
В отличие от grep (ищет строки) и sed (правит текст потоком), AWK мыслит записями и полями. Каждая строка — это запись, разбитая на колонки. Это превращает обработку структурированного вывода (
Программа на AWK — это набор правил вида:
— паттерн — условие, при котором срабатывает действие (можно опустить — тогда срабатывает на каждой строке)
— действие — что сделать с записью (можно опустить — тогда печатается строка целиком)
➡️ Ключевые встроенные переменные:
$0 — вся строка целиком
$1, $2, ... — поля (колонки) по порядку
NF — количество полей в строке (Number of Fields)
NR — номер текущей строки (Number of Records)
FS — разделитель полей на входе (по умолчанию — пробелы/табы)
OFS — разделитель полей на выходе
➡️ Основные параметры
-F — задать разделитель полей (-F: для
-v — передать переменную внутрь программы (-v threshold=80)
-f — взять программу из файла, а не из строки
🔵Блоки BEGIN и END
BEGIN выполняется до чтения файла, END — после. Удобно для заголовков и итогов.
✅ Примеры
Вывести только нужные колонки (имя пользователя и shell из passwd):
Найти процессы, потребляющие больше 50% CPU:
Отфильтровать строки лога по коду ответа nginx и посчитать количество 5xx:
AWK — это полноценный мини-язык.
Для разовых однострочников он экономит десятки строк на
#линуксятина
Назван по фамилиям создателей (Aho, Weinberger, Kernighan). Незаменим там, где нужно вытащить, отфильтровать или пересчитать данные из таблиц, логов и вывода других утилит.
В отличие от grep (ищет строки) и sed (правит текст потоком), AWK мыслит записями и полями. Каждая строка — это запись, разбитая на колонки. Это превращает обработку структурированного вывода (
ps, df, /etc/passwd, CSV, логи) в простые однострочники.Программа на AWK — это набор правил вида:
awk 'паттерн { действие }' файл
— паттерн — условие, при котором срабатывает действие (можно опустить — тогда срабатывает на каждой строке)
— действие — что сделать с записью (можно опустить — тогда печатается строка целиком)
➡️ Ключевые встроенные переменные:
$0 — вся строка целиком
$1, $2, ... — поля (колонки) по порядку
NF — количество полей в строке (Number of Fields)
NR — номер текущей строки (Number of Records)
FS — разделитель полей на входе (по умолчанию — пробелы/табы)
OFS — разделитель полей на выходе
➡️ Основные параметры
-F — задать разделитель полей (-F: для
/etc/passwd, -F, для CSV)-v — передать переменную внутрь программы (-v threshold=80)
-f — взять программу из файла, а не из строки
🔵Блоки BEGIN и END
BEGIN выполняется до чтения файла, END — после. Удобно для заголовков и итогов.
✅ Примеры
Вывести только нужные колонки (имя пользователя и shell из passwd):
awk -F: '{print $1, $7}' /etc/passwd
root /bin/bash
daemon /usr/sbin/nologin
Найти процессы, потребляющие больше 50% CPU:
ps aux | awk '$3 > 50 {print $2, $11}'
Отфильтровать строки лога по коду ответа nginx и посчитать количество 5xx:
awk '$9 ~ /^5/ {count++} END{print "5xx errors:", count}' access.log
AWK — это полноценный мини-язык.
Для разовых однострочников он экономит десятки строк на
grep | cut | sort, а в скриптах закрывает всю обработку табличных данных без выхода в Python.#линуксятина
- ❤ 8
- 👍 5
- 🔥 2














