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語句的語法如下:

語法

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,依此類推。要在 array 位置 [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

您還可以對陣列執行各種操作,例如對其元素/索引進行排序。為此,您可以使用asortasorti函式。

廣告
© . All rights reserved.