+ -
当前位置:首页 → 问答吧 → apache日志分析问题

apache日志分析问题

时间:2011-06-24

来源:互联网

apache的日志我已经用awk整理缩减了
现在的格式如下:
[22/Jun/2011:22:00:22 +0800] 406
[22/Jun/2011:22:03:37 +0800] 309
[22/Jun/2011:22:03:45 +0800] 402
.......


现在需要将没一分钟的后面的数字(即上面  405  309  402)  相加  等到如下类型的结果
[22/Jun/2011:22:00   相加结果
[22/Jun/2011:22:01   相加结果
[22/Jun/2011:22:02   相加结果
[22/Jun/2011:22:03   相加结果
即没一分钟内的相加结果

求教了

作者: xiachunmen   发布时间: 2011-06-24

本帖最后由 liion631818 于 2011-06-24 15:41 编辑
  1. awk 'BEGIN{FS=":| "}{a[$1":"$2":"$3]+=$6}END{for(i in a){print i,a[i]}}' file
复制代码

作者: liion631818   发布时间: 2011-06-24

  1. awk -F'[: ]+' -v OFS=":" '{n=$NF;NF-=3;}NR>1&&a!=$0{print a " " b;a=$0;b=0}{a=$0;b+=n}END{print a" "b}'
复制代码

作者: springwind426   发布时间: 2011-06-24

awk -F'[ :]' '{if($0!="")a[$1":"$2":"$3]+=$NF}END{for(i in a)print i"\t"a[i]}' file
做题速度不够快啊,被楼上抢先了

作者: ljbzju   发布时间: 2011-06-24

回复 ljbzju


   
还是做慢点的对啊,空行我没判断, 用$6也够烂的

作者: liion631818   发布时间: 2011-06-24

  1. awk '{sub(/:[^:]*$/,"",$1)}$1!=v{print v,s;s=0}{v=$1;s+=$3}' file
  2. awk '{sub(/:[^:]*$/,"",$1);a[$1]+=$3}END{for (i in a) print i,a[i]}' file
复制代码

作者: ywlscpl   发布时间: 2011-06-24



QUOTE:
apache的日志我已经用awk整理缩减了
现在的格式如下:
[22/Jun/2011:22:00:22 +0800] 406
[22/Jun/2011:2 ...
xiachunmen 发表于 2011-06-24 15:23




$ echo '[22/Jun/2011:22:00:22 +0800] 406
[22/Jun/2011:22:03:37 +0800] 309
[22/Jun/2011:22:03:45 +0800] 402' | awk -F':.. .+ ' '{sub("[[]","",$1);t[$1]+=$2}END{for(n in t)print n" "t[n]}'
22/Jun/2011:22:00 406
22/Jun/2011:22:03 711

作者: jason680   发布时间: 2011-06-24