awk — это не просто утилита, а целый мини-язык программирования, заточенный под обработку текстов. Разберём пару действительно интересных трюков, которые могут пригодиться в реальной жизни.
1. Обработка JSON с awk. Хотя jq справляется с JSON лучше, бывают случаи, когда под рукой только awk. Если структура JSON несложная, awk может помочь быстро вытащить нужные данные. Пример:
echo '{"name": "Alice", "age": 30, "city": "Paris"}' | awk -F '[,:{}]' '{print $4}'
Здесь -F '[,:{}]' определяет разделители как запятые, двоеточия и фигурные скобки, что позволяет достать значение "Alice". Конечно, с более сложными JSON это сложнее, но для быстрых нужд работает.
2. Простой анализ логов с условной фильтрацией. awk отлично подходит для задач быстрого анализа логов. Например, подсчитаем количество обращений с конкретных IP-адресов:
awk '{count[$1]++} END {for (ip in count) if (count[ip] > 100) print ip, count[ip]}' access.log
Эта команда выводит IP-адреса, которые встречаются более 100 раз, что может быть полезно для выявления подозрительной активности.
3. Подсчёт по временным меткам. Когда нужно анализировать логи по времени, например, суммировать количество событий по часам. Вот способ быстро агрегировать логи по часам:
awk '{split($4, a, ":"); hour=a[2]; count[hour]++} END {for (h in count) print h, count[h]}' access.log
Здесь split($4, a, ":") разбивает дату по двоеточию, чтобы вытащить час, и count[hour]++ подсчитывает обращения для каждого часа.
Все это лишь малая часть того, что можно сделать с awk. Используйте эти техники, чтобы сэкономить время и по-настоящему раскрыть потенциал командной строки.
BashTex 📱 #linux #utils