AWK - 数组
AWK 有关联数组,其中最好的一点是——索引不必是连续的数字集; 您可以使用字符串或数字作为数组索引。 此外,无需提前声明数组的大小——数组可以在运行时扩展/收缩。
它的语法如下 −
语法
array_name[index] = value
其中 array_name 是数组的名称,index 是数组索引,value 是分配给数组元素的任何值。
创建数组
为了更深入地了解数组,让我们创建和访问数组的元素。
示例
[jerry]$ awk 'BEGIN { fruits["mango"] = "yellow"; fruits["orange"] = "orange" print fruits["orange"] "\n" fruits["mango"] }'
在执行此代码时,您会得到以下结果 −
输出
orange yellow
在上面的示例中,我们将数组声明为 fruits,其索引是水果名称,值是水果的颜色。 要访问数组元素,我们使用 array_name[index] 格式。
删除数组元素
对于插入,我们使用了赋值运算符。 同样,我们可以使用 delete 语句从数组中删除一个元素。 删除语句的语法如下 −
语法
delete array_name[index]
下面的示例删除元素 orange。 因此该命令不显示任何输出。
示例
[jerry]$ awk 'BEGIN { fruits["mango"] = "yellow"; fruits["orange"] = "orange"; delete fruits["orange"]; print fruits["orange"] }'
多维数组
AWK 只支持一维数组。 但是您可以使用一维数组本身轻松模拟多维数组。
例如,下面给出的是一个 3x3 二维数组 −
100 200 300 400 500 600 700 800 900
在上面的示例中,array[0][0] 存储 100,array[0][1] 存储 200,依此类推。 要在数组位置 [0][0] 存储 100,我们可以使用以下语法 −
语法
array["0,0"] = 100
虽然我们给出了 0,0 作为索引,但这不是两个索引。 实际上,它只是一个带有字符串 0,0 的索引。
以下示例模拟二维数组 −
示例
[jerry]$ awk 'BEGIN { array["0,0"] = 100; array["0,1"] = 200; array["0,2"] = 300; array["1,0"] = 400; array["1,1"] = 500; array["1,2"] = 600; # print array elements print "array[0,0] = " array["0,0"]; print "array[0,1] = " array["0,1"]; print "array[0,2] = " array["0,2"]; print "array[1,0] = " array["1,0"]; print "array[1,1] = " array["1,1"]; print "array[1,2] = " array["1,2"]; }'
在执行此代码时,您会得到以下结果 −
输出
array[0,0] = 100 array[0,1] = 200 array[0,2] = 300 array[1,0] = 400 array[1,1] = 500 array[1,2] = 600
您还可以对数组执行各种操作,例如对其元素/索引进行排序。 为此,您可以使用 assort 和 asorti 函数