Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12658
  • 博文数量: 1
  • 博客积分: 98
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-12 09:29
文章分类
文章存档

2011年(1)

分类: Python/Ruby

2011-05-03 20:08:55

awk 数组中所定义的数组以哪一格域为下标,则数组则代表这一域
如name[$2] 则将$2 这一列组合成一数组,如果赋值,则代表所赋值组合成的数组,例如: name[$2]=$1
则name是由$1这一列组成的数组,如果,name[$2]=1,则根据NR的值组成NR个由1组成的数组,每个元素用name[NR]表示,每个name[NR]=1,看下面的例子:
[root@localhost awk]# cat file
1214 42  5 34  543 54
2323 434 43 34 434 44
122  32
1213 324 4345 456 56 77
1233 q3 we23 2342 2342
213 213 546 798 987 654
[root@localhost awk]# awk  '{name[$0]=$1};END{for(i in name) print  name[i]}' file
122
2323
1233
1213
213
1214
[root@localhost awk]# awk  '{name[$0]=1};END{for(i in name) print  name[i]}' file
1
1
1
1
1
1
 

name这个数组名则无法直接打印:
[root@localhost awk]# awk  '{name[$2]=1};END{for(i in name) print  name}' file
awk: (FILENAME=file FNR=6) fatal: attempt to use array `name' in a scalar context
 
然而,for(i in name) i则表示的是name[$x]中的x这一列,因为x在此是下标,就是$x,如:
[root@localhost awk]# awk  '{name[$2]=1};END{for(i in name) print  i}' file     324
q3
32
42
213
434
END 语句中,name数组仍然表示的是$2,并不改变,而name[i] 的值会是1,i的值为$2的值,则i为name的下标,name["42"]=42 name["434"]=434....
阅读(2476) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~