awk多个数组的使用

#!/bin/bash
awk 'BEGIN{printf "%-60s %-10s %-10s %-10s\n","url","count","time","avg_time"}
$NF ~ /^[0-9]/{
c1[$11]+=$NF
c2[$11]++}
END{
for(b in c2) {
    for(a in c1) 
        if(a == b)
        printf "%-60s %-10s %-10s %-10s\n", a,c2[b],c1[a],c1[a]/c2[b]
        continue
}
}' log.txt
~           

注释:

c1统计每个url对应的总响应时间

c2统计每个url对应的总请求个数

每次循环,外围c2的值是不变的,内围c1处于变化中,当c1的url和c2相等时,则输出对应数据,同时跳出此次内循环,开启下一次新循环

获取每个url的平均响应时间

日志格式如下:

2014-06-20 16:47:43  [ resin-port-18057-51:333230 ] - [ INFO ]  [url] http://abc.com/list 254
2014-06-20 16:47:43  [ resin-port-18057-51:333230 ] - [ INFO ]  [url] http://abc.com/list 254 

2014-06-20 16:47:43  [ resin-port-18057-51:333230 ] - [ INFO ]  [url] http://abc.com/list 254 

2014-06-20 16:47:43  [ resin-port-18057-51:333230 ] - [ INFO ]  [url] http://abc.com/list 254

执行效果如下:

url                                                               count      time       avg_time 
http://a.9tong.com/plat/active.do                           185         31            0.167568 
http://a.9tong.com/product/updatePic.do                 80          16465      205.812  
http://a.9tong.com/product/shopList.do                   1133       51663      45.5984

 

 

转载于:https://www.cnblogs.com/aaa103439/p/3800024.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值