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

awk多个数组的使用,布布扣,bubuko.com

时间: 2024-10-29 22:30:00

awk多个数组的使用的相关文章

awk编程之数组、控制流(长期更新)

数组篇: 数组格式    array[index]=value     统计nginx的access.log日志中访问最多的10个IP 101.121.182.144 - - [24/Jan/2017:11:25:59 +0800] "POST /home/activity/new-cow-interface!returnNewCowMsg.action HTTP/1.1" 200 2 -uin=50863819- "-" "Java/1.6.0_33&q

awk多维数组

awk命令虽然没有宣称支持多维数组,却提供了定义多维数组的方法.awk定义多维数组的方法是把多个下标串成字符串,下标之间用内置变量SUBSEP的值分隔.变量SUBSEP的值是"\034",这是个不可打印的字符,极少被使用,因此不太可能被用作下标中的字符.表达式matrix[2,8]其实就是数组matrix[2 SUBSEP 8] ,转换后所得的结果为matrix["2\0348"] .因此,下标成了关联数组中的唯一标识符. 范例 $ cat datafile 1 2

马哥笔记第十六天故障排除、trap、sed、awk、bash数组、bash字符串操作

A.故障排除:             紧急救援模式:rescue,相当于一个小型的linux系统和让你切换到硬盘系统中. 1.grub损坏:                         谨慎操作 dd  if=/dev/zero of=/dev/sda count=1 bs=400   不能大于446,否则破坏分区表中数据.这时需要进入救援模式,选择Rescue installed system,选择语言.键盘设置.是否启用网络.继续continue.选择启动shell.使用chroot

awk中遍历数组的2种方式

awk中数组比较随意,同一个数组中的元素不一定要相同类型,而且数组下表可以是数字也可以是字符. 遍历数组有两种方式: 1. 类似于C++的方式 #-----------------------------/chapter11/ex11-30.sh------------------ #! /bin/awk -f BEGIN { #定义数组 stu[1]="200200110" stu[2]="200200164" stu[3]="200200167&quo

awk多维数组案例多角度解决实战

版本:V1.1 问题提出者:python群友 问题是否解决:已解决 文档作者:悠久之翼(老男孩老师支持) 修改记录:2015-04-06 系统环境:Centos 6.6 (适合32bit and 64bit) 内核版本:2.6.32-504.el6.x86_64 问题描述: 以下是原文:来自网友的. 老男孩老师,你好:我要取如下数据: 1.单独第一列去重后的结果,这个我已做出来 awk '{count[$1]++}; END{for(name in count) print name,count

【译】 AWK教程指南 5AWK中的数组

awk程序中允许使用字符串当做数组的下标(index).利用这个特色十分有助于资料统计工作.(使用字符串当下标的数组称为Associative Array) 首先建立一个数据文件,并取名为 reg.dat.此为一学生注册的资料文件:第一栏为学生姓名,其后为该生所修课程. awk中数组的特性 1. 使用字符串当数组的下标(index). 2. 使用数组前不须声明数组名及其大小. 例如:希望用数组来记录 reg.dat 中各门课程的修课人数.这情况,有两项信息必须储存: (a) 课程名称,如: "O

shell文本过滤编程(六):awk之循环判断及数组

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 与上一节printf一样,awk的循环判断和C语言的循环判断语法极其类似. 1. While循环 #!/bin/sh awk ' BEGIN { ORS="" } { i=0 while (i < NF) { printf("* ") i++ } print "\n" } ' group_file1 首先,

linux awk(9)命令详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

AWK用法入门详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK