📜  AWK-数组

📅  最后修改于: 2020-11-05 03:51:39             🧑  作者: Mango


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,其索引是fruit name,其值是该水果的颜色。要访问数组元素,我们使用array_name [index]格式。

删除数组元素

对于插入,我们使用了赋值运算符。同样,我们可以使用delete语句从数组中删除元素。 delete语句的语法如下-

句法

delete array_name[index]

下面的示例删除元素orange 。因此,该命令不显示任何输出。

[jerry]$ awk 'BEGIN {
   fruits["mango"] = "yellow";
   fruits["orange"] = "orange";
   delete fruits["orange"];
   print fruits["orange"]
}'

多维数组

AWK仅支持一维数组。但是,您可以使用一维数组本身轻松地模拟多维数组。

例如,下面给出的是一个3×3二维数组-

100   200   300
400   500   600
700   800   900

在上面的示例中,array [0] [0]存储100,array [0] [1]存储200,依此类推。要将100存储在数组位置[0] [0]中,我们可以使用以下语法-

句法

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

您还可以对数组执行各种操作,例如对元素/索引进行排序。为了这个目的,你可以使用自由组合,asorti功能