免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1438 | 回复: 4
打印 上一主题 下一主题

awk 请教 急用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-15 08:56 |只看该作者 |倒序浏览
处理之前的数据:
58.254.39.13 10.21.82.66
58.254.39.13 10.24.105.2
58.254.39.13 10.24.124.200
58.61.166.88 172.16.51.4
58.61.166.88 172.16.52.40
61.144.56.101 10.21.82.66
61.144.56.101 10.24.105.2
61.144.56.101 10.24.124.200
处理后的数据
10.21.82.66   10.24.105.2         2
10.21.82.66   10.24.124.200     2
10.24.105.2   10.24.124.200     2
172.16.51.4    172.16.52.40       1
数据的形式类似如:
第一列代表一种性质的节点(如1,2…..),第二列代表另外一种性质的节点,
1  A
1  B
1  C
2  A
2  C
3  D
3  A
变化后,与第一列连接相同的节点的(例如A连接1,B也连接1,C连接1,那么处理后的数据就有
A,B , 1
A ,C,  1
B,C  , 1
后面的1代表他们有一次这样的连接),下面处理后的数据A,C后面是是因为A,C同时连接了节点1,2,3。有3次,所以为3.
A , B , 1
A, C  ,2
B, C , 1
D,A, 1

论坛徽章:
0
2 [报告]
发表于 2009-03-15 09:20 |只看该作者
awk '{a[$1]=a[$1]$2;s[$2]=1}END{for(it in a){for(iz in s){for(ix in s){if(ix!=iz){if((a[it]~ix)&&(a[it]~iz)){d[ix","iz]++}}}}};for(xx in d)print xx,d[xx]}' data|awk -F"[, ]" '$1<$2'

10.21.82.66,10.24.105.2 2
10.24.105.2,10.24.124.200 2
172.16.51.4,172.16.52.40 1
10.21.82.66,10.24.124.200 2

哥们,我这个不是可以吗?只是输出顺序有点差别很重要 吗

论坛徽章:
0
3 [报告]
发表于 2009-03-15 09:23 |只看该作者
awk '{a[$1]=a[$1]$2;s[$2]=1}END{for(it in a){for(iz in s){for(ix in s){if(ix!=iz){if((a[it]~ix)&&(a[it]~iz)){d[ix","iz]++}}}}};for(xx in d)print xx,d[xx]}' data|awk -F"[, ]" '$1<$2'|sort

10.21.82.66,10.24.105.2 2
10.21.82.66,10.24.124.200 2
10.24.105.2,10.24.124.200 2
172.16.51.4,172.16.52.40 1

加个sort,顺序跟你的一样了

论坛徽章:
0
4 [报告]
发表于 2009-03-15 09:40 |只看该作者

to sunbw001

问题已经解决
非常感谢!sunbw001

论坛徽章:
0
5 [报告]
发表于 2009-03-15 09:49 |只看该作者
是文件问题吗?呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP