免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: net17sharplau
打印 上一主题 下一主题

如何用awk实现以下需求? [复制链接]

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
11 [报告]
发表于 2010-05-11 20:14 |只看该作者
回复 11# net17sharplau



awk1line & sed1line 注解补充版&cheat sheets
http://bbs.chinaunix.net/thread-1635180-1-1.html

O'reilly sed & awk 2nd Edition
http://bbs.chinaunix.net/viewthread.php?tid=1588614#pid11286082

三篇awk学习资料
http://bbs.chinaunix.net/thread-1425973-1-4.html

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
12 [报告]
发表于 2010-05-11 21:49 |只看该作者
本帖最后由 expert1 于 2010-05-11 22:00 编辑

学习8楼了,好好揣摩^_^



有一点不明白,8楼的这里 b[$1,a[$1]]=$2 是什么意思啊,能否结合这个例子讲讲呢?对二维数组不太明白,高手用例子介绍一下,谢谢哈

论坛徽章:
0
13 [报告]
发表于 2010-05-11 22:06 |只看该作者
学习8楼了,好好揣摩^_^



有一点不明白,8楼的这里 b[$1,a[$1]]=$2 是什么意思啊,能否结合这个例子讲 ...
expert1 发表于 2010-05-11 21:49


awk 没有二维数组

a[k1,k2,k3...] 只是把 k1,k2,k3用OFS连接成一个字符串,然后用这个字符串作为数组的下标

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
14 [报告]
发表于 2010-05-12 12:55 |只看该作者
哪位解释一下8楼的写法是什么意思,谢了啊

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
15 [报告]
发表于 2010-05-12 13:07 |只看该作者
回复 15# expert1


8楼的思路是这样的:
数组a用来记录每个IP地址出现的次数,数组b用来记录每个IP地址对应的网址。数组b的下标由两个部分组成,第一部分是IP地址,第二部分是该IP地址是第几次重复出现。

我们以前5行数据为例,来分析一下它是怎样工作的:
第一行:a[192.168.1.2]++,b[192.168.1.2,1]=http://www.baidu.com/xxxx1
第二行:a[192.168.1.2]++,b[192.168.1.2,2]=http://www.baidu.com/x
第三行:a[192.168.1.2]++,b[192.168.1.2,3]=http://www.baidu.com/xxx2
第四行:a[192.168.1.3]++,b[192.168.1.3,1]=http://www.163.com/xxxx1
第五行:a[192.168.1.3]++,b[192.168.1.3,2]=http://www.baidu.com/oooo1

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
16 [报告]
发表于 2010-05-12 13:10 |只看该作者
灰常感谢啊,你真是热心人啊

论坛徽章:
0
17 [报告]
发表于 2010-05-12 13:29 |只看该作者
本帖最后由 ghp268 于 2010-05-12 14:35 编辑
  1. awk '{if(!a[$1]){a[$1]=$2;total++;b[$1]++}else{b[$1]++;a[$1]=a[$1]"\n\t\t\t"$2}}END{for(i in b) printf b[i]"\t"i"\t"a[i]"\n";printf"Total :"total"\n"}' file1
复制代码

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
18 [报告]
发表于 2010-05-12 13:46 |只看该作者
但是我还是不太明白else{print "\t\t\t"b[i,j]}
这个b[i,j]的值怎么来的呢?

大哥给详细讲一下,现在脑子还没开窍啊

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
19 [报告]
发表于 2010-05-12 13:47 |只看该作者
回复 18# ghp268


少了最后的统计:
Total IP:5

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
20 [报告]
发表于 2010-05-12 14:07 |只看该作者
本帖最后由 expert1 于 2010-05-12 14:24 编辑

哎,自己总算搞明白怎么回事了,的确够叼的写的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP