accesslog或者cookie'log的shell常用分析脚本
[java]
#统计apache cookie log中访问频率最高的20个ip和访问次数
cat cookielog | awk '{ a[$1] += 1; } END { for(i in a) printf("%d, %s/n", a[i], i ); }' | sort -n | tail -20
#统计apache cookie log中返回404的url列表
awk '$11 == 404 {print $8}' access_log | uniq -c | sort -rn | head
#统计一个ip访问超过20次的ip和访问次数列表,把$1改为url对应的$9,则可以统计每个url的访问次数
cat access_log | awk '{print $1}' | sort | uniq -c | sort -n | awk '{ if ($1 > 20)print $1,$2}'
#统计每个url的平均访问时间
cat cookielog | awk '{ a[$6] += 1; b[$6] += $11; } END { for(i in a) printf("%d, %d, %s/n", a[i],a[i]/b[i] i ); }' | sort -n | tail -20
#打印访问apache的新ip列表
tail -f access.log | awk -W interactive '!x[$1]++ {print $1}'
#通过日志查看当天指定ip访问次数过的url和访问次数:
cat access.log | grep "10.0.21.17" | awk '{print $7}' | sort | uniq -c | sort –nr
#通过日志查看当天访问次数最多的时间段
awk '{print $4}' access.log | grep "26/Mar/2012" |cut -c 20-50|sort|uniq -c|sort -nr|head
#查看某一天的访问量
cat access_log|grep '12/Nov/2012'|grep "******.htm"|wc|awk '{print $1}'|uniq
#查看访问时间超过30ms的url列表
cat access_log|awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
#列出响应时间超过60m的url列表并统计出现次数
cat access_log |awk ‘($NF > 60 && $7~//.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
#排除搜索引擎后的url访问次数
sed "/Baiduspider/d;/Googlebot/d;/Sogou web spider/d;" xxx.log|awk -F' ' '{print $7}'|sort | uniq -c | sort -k1,2 -nr
#统计/index.html页面的访问uv
grep "/index.html" access.log | cut –d “ ” –f 4| sort | uniq | wc –l