Знание должно быть доступно!

Путь /ОС/FreeBSD

AWK - это боевой топор для резки текста по полям! Старый, как кости первых кодеров, но острый, как клык варлорда! Писали его трое шаманов: Aho, Weinberger, Kernighan - вот и название: **A-W-K
**

Что это такое?

AWK — язык однострочных скриптов, заточенный под обработку текстов: парсинг логов, выдирание нужных полей, агрегация данных. Славится своей мощью при разборе строк с разделителями (как CSV, TSV, или просто пробелы)

awk 'условие {действие}' файл.

Примеры боя:

  1. Вывести второй столбец из файла:

awk '{print $2}' файл

2)Показать строки, где второй столбец больше 100:

awk '$2 > 100' файл

3)Подсчитать сумму чисел из третьей колонки:

awk '{sum += $3} END {print sum}' файл

4)Заменить разделитель на : (если вход — CSV):

awk -F',' -v OFS=':' '{print $1, $2, $3}' файл.csv

Особенности:

  • BEGIN {} - блок до начала боя (до чтения строк)

  • END {} - блок после сражения (после всех строк)

  • NR - номер строки

  • NF - число полей в строке

  • FS - разделитель входа (Field Separator)

  • OFS - разделитель выхода

Когда юзать?

  • Когда grep и cut уже не справляются

  • Когда надо склеить, посчитать, отфильтровать, отформатировать - БЫСТРО

  • Когда нет времени писать на Python, а надо вырезать лог за 10 секунд

Хочешь резать логи, CSV, таблички - AWK твой боевой друг. Быстрый, злой, лаконичный. Почитай про gawk - GNU-версию, у неё больше магии.