Arrays
优质
小牛编辑
126浏览
2023-12-01
AWK有关联数组,关于它的最好的事情之一是 - 索引不需要是连续的数字集; 您可以使用字符串或数字作为数组索引。 此外,不需要事先声明数组的大小 - 数组可以在运行时扩展/收缩。
其语法如下 -
语法 (Syntax)
array_name[index] = value
其中array_name是数组的名称, index是数组索引, value是分配给数组元素的任何值。
创建数组
为了更深入地了解数组,让我们创建和访问数组的元素。
例子 (Example)
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange"
print fruits["orange"] "\n" fruits["mango"]
}'
执行此代码时,您将获得以下结果 -
输出 (Output)
orange
yellow
在上面的例子中,我们将数组声明为fruits其索引是fruit名称,值是fruit的颜色。 要访问数组元素,我们使用array_name[index]格式。
删除数组元素
对于插入,我们使用赋值运算符。 同样,我们可以使用delete语句从数组中删除一个元素。 delete语句的语法如下 -
语法 (Syntax)
delete array_name[index]
以下示例删除元素orange 。 因此该命令不显示任何输出。
例子 (Example)
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
Multi-Dimensional arrays
AWK仅支持一维数组。 但您可以使用一维数组本身轻松模拟多维数组。
例如,下面给出的是一个3x3的三维阵列 -
100 200 300
400 500 600
700 800 900
在上面的例子中,array [0] [0]存储100,array [0] [1]存储200,依此类推。 要在数组位置[0] [0]存储100,我们可以使用以下语法 -
语法 (Syntax)
array["0,0"] = 100
虽然我们给0,0作为索引,但这些不是两个索引。 实际上,它只是一个字符串为0,0索引。
以下示例模拟二维数组 -
例子 (Example)
[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"];
}'
执行此代码时,您将获得以下结果 -
输出 (Output)
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
您还可以对数组执行各种操作,例如对元素/索引进行排序。 为此,您可以使用asorti和asorti函数