免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7170 | 回复: 4

关于awk for (i in a) [复制链接]

论坛徽章:
0
发表于 2009-03-13 14:39 |显示全部楼层
awk '{a[$1]+=$2;b[$1]++}END{for(j in a) print j,a[j],b[j]}' filename


对于红字,本来以为自己已经理解,不过看了刚才的问题,似乎我的理解有误
a 15
sdf 23
we 56
sdf 23
a 25
a 55
sdfsf 25
we 3

a数组应该存的第二列的数字,那再来个for j in a ,j 怎么会是第一列的各个项呢?

论坛徽章:
0
发表于 2009-03-13 14:41 |显示全部楼层
a[$1]+=$2: $1做为数组a的下标
for (j in a)就遍历数组a的下标赋值给j

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-03-13 14:42 |显示全部楼层
原帖由 goride 于 2009-3-13 14:39 发表
awk '{a[$1]+=$2;b[$1]++}END{for(j in a) print j,a[j],b[j]}' filename


对于红字,本来以为自己已经理解,不过看了刚才的问题,似乎我的理解有误
a 15
sdf 23
we 56
sdf 23
a 25
a 55
sdfsf 25
...

a[j]才是第二列的和 a[$1]+=$2

for(j in a)指的j是$1的集合.....

论坛徽章:
0
发表于 2009-03-13 14:43 |显示全部楼层
原来是遍历下标啊。。。。。。。

难怪我j in b 试了也是出来一样的结果。

论坛徽章:
0
发表于 2009-03-13 14:46 |显示全部楼层
原帖由 goride 于 2009-3-13 14:39 发表
awk '{a[$1]+=$2;b[$1]++}END{for(j in a) print j,a[j],b[j]}' filename


对于红字,本来以为自己已经理解,不过看了刚才的问题,似乎我的理解有误
a 15
sdf 23
we 56
sdf 23
a 25
a 55
sdfsf 25
...

$1是你的下标!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP