awk

Assigning Array Elements

分配数组元素

在awk里,数组是关联的,比如一个数据组包含多个索引/值对。索引不需要是一组连续的数字;事实上,它可以是一个字符串或数字,并且不需要指定数组大小。

语法:

arrayname[string]=value

1. arrayname 是数组的名子

2. string是数组的索引

3. value是分配数组的元素的任意值。

访问awk数组中的元素

如果你访问数组中的特定元素,你使用的格式arrayname[index],它分配值给你那个索引。

下面是一个简单的数组分配例子:

$ cat array-assign.awk
BEGIN {
    item[101]="HD Camcorder";
    item[102]="Refrigerator";
    item[103]="MP3 Player";
    item[104]="Tennis Racket";
    item[105]="Laser printer";
    item[1001]="Tennis Ball";
    item[55]="Laptop";
    item["na"]="Not Available";
    print item["101"];
    print item[102];
    print item["103"];
    print item[104];
    print item["105"];
    print item[1001];
    print item[55];
    print item["na"];
}

$ awk -f array-assign.awk
HD Camcorder
Refrigerator
MP3 Player
Tennis Racket
Laser printer
Tennis Ball
Laptop
Not Available

下面是上面例子的注释: 1、数组索引不在一个序列里。它不是从0或1开始。它真正开始是从101..105,然后跳到1001,然后又到55,然后它有一个字符串索引“na”。

2、数组索引可以是字符串,此数组中最后一个项目有一个字符串索引比如“na”。
3、在awk中,你不需要初始化或者甚至不需要定义数组。在你使用之前,你不需要指定总的数组大小。
4、一个awk数组命名约定类似于一个awk变量命令约定。

从awk点出发,数组索引通常是一个字符串。即例是你使用一个数字做索引,awk将作为字符串索引处理,下面两个是一样的。

item[101]="HD Camcorder";
item["101"]="HD Camcorder"