LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1058|回复: 10

统计全年的访问日志,如何写?

[复制链接]
发表于 2006-7-20 10:40:17 | 显示全部楼层 |阅读模式
日志:access_log.$data (日期)
年份:2005.7.1-2006.7.1
要求:
由于日志做了ref记录,要从这些日志中寻找出来包含与公司做推广的商户访问次数。
比如:A公司做推广,在日志里面就含有/ref/st_A或者是/ref,st_A就是想找出含有这样标记的行进行汇总。
grep -c "/ref[/|,]st_A" access_log.2006-7.1 这样一条一条好麻烦
有什么好的办法都能一起统计出来
谢谢各位!
发表于 2006-7-20 11:22:04 | 显示全部楼层
给出一节log样本出来吧。
回复 支持 反对

使用道具 举报

发表于 2006-7-20 11:25:26 | 显示全部楼层
cat log | sort -k 2 | awk '{print $1 $2 $3}' | uniq -d -c

具体reffer在第几列写清楚。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-20 12:05:50 | 显示全部楼层
log 格式:
219.136.0.0 - - [20/Jun/2006:00:05:10 +0800] "GET /ref/st_mop_620gf/component/option,com_page/Itemid,709 HTTP/1.1" 302 269 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler )" - - "gzip, deflate" "-" "-" - -


刚写了一个,效率比较低
#!/bin/sh
#test.sh
num=0
for i in `cat file1` ; do
        cat ../abc.com-access_log.200606$i|grep -c '/ref[/|,]st_t2t2'|while read line;do
                                                                                num=$(($num+$line))
                                                                                  done
done
echo $num
这个是统计6月份的。

l
回复 支持 反对

使用道具 举报

发表于 2006-7-20 13:10:01 | 显示全部楼层
log 格式:
219.136.0.0 - - [20/Jun/2006:00:05:10 +0800] "GET /ref/[color="Red"]st_mop_620gf/component/option,com_page/Itemid,709 HTTP/1.1" 302 269 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler )" - - "gzip, deflate" "-" "-" - -

不确定要的是哪一段,假定是红色部分。
cat access.log |awk -F '/' '{print $5}'|sort|uniq -c
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-20 13:23:37 | 显示全部楼层
楼上的,因为/ref/st这样的格式会经常变化,awk 出来的列5会经常变化,所以这样出来的数据不准确
grep -c '/ref[/|,]' file执行的时间教长,有没有什么好的方法
回复 支持 反对

使用道具 举报

发表于 2006-7-20 13:27:33 | 显示全部楼层
怎么个经常变化法,找出一点规律啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-20 13:32:00 | 显示全部楼层
没有规律可寻找啊。比如有的里面是没有/ref这个字段的,有的是在GET前会分析出来其他的字段。也就是说 /ref之前可能会有N个/分割符出现,这样就导致awk出来的数据不准确啊。
回复 支持 反对

使用道具 举报

发表于 2006-7-20 14:08:58 | 显示全部楼层
那就没办法帮到你了,你可以试试拿字符串作分割符,比如ref,或者先把不规则的过滤掉。
回复 支持 反对

使用道具 举报

发表于 2006-7-20 23:21:33 | 显示全部楼层
awk 'BEGIN{count=0}
/ref[/,]st_t2t2/ {count++}
END{print count}' allyourlogfiles
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表