Работа с awk и CSV

Команда awk — это мощный текстовый анализатор, используемый для обработки строк и столбцов в текстовых файлах, особенно в формате CSV (разделённые запятой значения).

Основные возможности awk:

  • Разделение строк на поля по заданному разделителю (по умолчанию — пробел, но можно задать любой, например, запятую).

  • Фильтрация строк по условиям.

  • Вывод определённых полей.

  • Агрегация и подсчёт.

Пример файла CSV:

Предположим, у нас есть файл Кэшбэк_ссылки.csv следующего вида:

Название;Ссылка;Клики;Покупки ($);Покупки в пути ($);Отказы
АлиЭкспресс;https://ali.com;23;5.40;1.23;0
Ozon;https://ozon.ru;10;2.00;0.00;1
СберМаркет;https://sbermarket.ru;5;0.00;0.00;0

Часто используемые примеры с awk:

1. Установим разделитель полей как `;`:

awk -F ";" '{print $1}' Кэшбэк_ссылки.csv

Выведет названия всех магазинов.

2. Ссылки с хотя бы одним переходом:

awk -F ";" '$3 > 0 {print $2}' Кэшбэк_ссылки.csv

3. Ссылки с более чем 10 кликами:

awk -F ";" '$3 > 10 {print $1, $3}' Кэшбэк_ссылки.csv

4. Покупки больше $1.00:

awk -F ";" '$4 > 1 {print $1, $4}' Кэшбэк_ссылки.csv

5. Самые кликабельные ссылки (сортировка по убыванию):

awk -F ";" 'NR>1 {print $1, $3}' Кэшбэк_ссылки.csv | sort -k2 -nr

6. Суммарное количество переходов:

awk -F ";" 'NR>1 {sum += $3} END {print "Всего кликов:", sum}' Кэшбэк_ссылки.csv

Пояснения:

  • -F ";" — установка символа-разделителя (в CSV-файле это точка с запятой).

  • $1, $2, $3 ... — поля строки. $1 — первое поле, $2 — второе и т.д.

  • NR > 1 — пропуск первой строки (заголовка).

  • sum += $3 — подсчёт суммы всех значений в третьем столбце.

🎯 Практическое применение:

Используя awk, вы можете быстро:

  • Получить список самых популярных ссылок.

  • Найти неработающие ссылки (например, без переходов).

  • Вычислить эффективность по покупкам.

  • Проанализировать отказы и транзакции в пути.

🛠 Подходит для использования на Raspberry Pi Zero 2 W, легко автоматизируется в bash-скриптах и cron-задачах.