博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用awk的二维数组解决一个日志统计的实际问题
阅读量:7091 次
发布时间:2019-06-28

本文共 1868 字,大约阅读时间需要 6 分钟。

hot3.png

项目中遇到的一个实际问题,日志如下

2013-09-13 00:06:09:adid:100002542013-09-13 00:06:14:adid:100002542013-09-13 00:06:43:adid:100002532013-09-13 00:06:48:adid:100002542013-09-13 00:07:07:adid:100002542013-09-13 00:07:12:adid:100002542013-09-13 00:07:19:adid:100002542013-09-13 00:07:32:adid:100002542013-09-13 00:08:05:adid:100002542013-09-13 00:08:20:adid:100002402013-09-13 00:08:28:adid:100002532013-09-13 00:08:32:adid:100002532013-09-13 00:08:41:adid:100002542013-09-13 00:09:02:adid:100002532013-09-13 00:09:10:adid:100002542013-09-13 00:09:11:adid:100002402013-09-13 00:09:18:adid:100002542013-09-13 00:09:19:adid:100002542013-09-13 00:09:27:adid:100002542013-09-13 00:09:28:adid:100002402013-09-13 00:09:32:adid:100002532013-09-13 00:09:34:adid:100002402013-09-13 00:09:59:adid:100002532013-09-13 00:10:05:adid:100002542013-09-13 00:10:07:adid:10000253

    我想要按照小时去统计adid的个数awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (\034)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2\0344。

    类似一维数组的成员测试,多维数组可以使用 if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。类似一维数组的循环访问,多维数组使用 for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)。

代码如下:

awk 'BEGIN{ay[1,10]=5;ay[10,2]=12;}END{for (k in ay) {   split(k,idx,SUBSEP);   print idx[1],idx[2],ay[idx[1],idx[2]];   }}'或者awk 'BEGIN{ay[1,10]=5;ay[10,2]=12;}END{for (k in ay) {   print k,ay[k];   }}'

得到结果如下:

2013-09-13 00 10000239 762013-09-13 00 10000240 1552013-09-13 00 10000253 892013-09-13 00 10000254 1482013-09-13 01 10000180 1212013-09-13 01 10000181 832013-09-13 01 10000239 422013-09-13 01 10000240 1392013-09-13 01 10000253 562013-09-13 01 10000254 802013-09-13 02 10000180 462013-09-13 02 10000181 562013-09-13 02 10000239 162013-09-13 02 10000240 862013-09-13 02 10000253 262013-09-13 02 10000254 45

转载于:https://my.oschina.net/wojibuzhu/blog/162490

你可能感兴趣的文章
一八年第三天晚上十点半的thinking
查看>>
ksh和bash区别
查看>>
keepalived 组播的配置
查看>>
华为路由器交换机配置相关功能
查看>>
谷歌收购眼球追踪技术公司Eyefluence,眼动关注度将成为VR的新视角
查看>>
【蜕变之路】第32天 使用STS创建SpringBoot项目 (2019年3月22日)
查看>>
Oracle之数据挖掘的更新介绍
查看>>
NFS
查看>>
Exception异常处理
查看>>
第二十讲 任务的挂起和恢复
查看>>
emmm算是来了
查看>>
do…while语句
查看>>
网络工程师成长日记413-长安大学交换机项目
查看>>
jenkins
查看>>
设置中奖概率
查看>>
第4章 类名作为形参和返回值
查看>>
Java 正则表达式
查看>>
CentOS6启动过程超详解分析
查看>>
日本互联网巨头Line和Mercari联手打造移动支付服务
查看>>
Rsync远程同步,实现下行 ,上行异地备份。配置rsync+inotify实时备份。
查看>>