Как использовать AWK для генерации отчета о пропускной способности в Apache
Мои журналы Apache настроены так:
LogFormat "%v %t %I %O" billing
Как я могу использовать AWK для создания отчета, который показывает общую пропускную способность (получено + отправлено) в МБ на виртуальный хост?
Вот пример вывода журнала:
bob.com [3 JULY 2013] 903 299
bob.com [8 JULY 2013] 192 138
luke.com [12 JULY 2013] 34 123
bob.com [19 JULY 2013] 616 213
luke.com [22 JULY 2013] 23 74
Я ищу вывод, который суммирует 3-й и 4-й столбцы для bob.com и luke.com без указания доменов, поскольку у меня более 50 доменов, и я не хотел бы поддерживать список. Гораздо проще, просто распечатать.
2 ответа
Решение
Или это:
awk '{T[$1]+=$NF+$(NF-1)} END{for(i in T) print i,T[i]}' file
будет производить
bob.com 2361
luke.com 254
С вашим примером файла журнала..
Вы можете написать небольшой скрипт для этой работы:
#!/bin/bash
log_file="/path/to/logfile"
domains=`awk '{print $1}' $log_file | sort | uniq`
for domain in $domains
do
sum=$(grep "$domain" $log_file | \
awk '{ for (i = 5; i <= NF; i++) s = s+$i }; END { print s+0 }')
echo "Total bandwidth of $domain is $sum"
done