我有我的Apache日志设置像这样:
LogFormat "%v %t %I %O" billing
我怎样才能使用AWK生成一个报告,显示每个虚拟主机的总带宽(接收+发送),以MB为单位?
以下是一个日志输出示例:
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
我正在寻找一个输出,为bob.com和luke.com总结第三和第四列,而没有真正指定域名,因为我有50多个域名,不想维护一个列表。 打印出来更加容易。
或这个:
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