77. 分配数组元素
与您在其他编程语言中使用的传统数组相比,awk 中的数组非常强大。
在 Awk 中,数组是关联的,即一个数组包含多个索引/值对。 索引不需要是一组连续的数字; 实际上它可以是字符串或数字,并且不需要指定数组的大小。
语法:
arrayname[string]=value
arrayname
是数组的名称。string
是数组的索引。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
请注意上面示例中的以下几点:
- 数组索引不按顺序排列。它甚至不必从 0 或 1 开始。它实际上是从 101 .. 105 开始,然后跳到 1001,然后下降到 55,然后它有一个字符串索引
"na"
。 - 数组索引可以是字符串。该数组中的最后一项有一个索引字符串,即
"na"
索引。 - 您不需要在 awk 中初始化甚至定义数组。在使用它之前不需要指定总数组大小。
- awk 数组的命名约定与 awk 变量的命名约定相同。
从 awk 的角度来看,数组的索引始终是一个字符串。即使您传递一个数字作为索引,awk 也会将其视为字符串索引。以下两者是相同的。
item[101]="HD Camcorder"
item["101"]="HD Camcorder"