AWK 陣列介紹

安全劍客發表於2020-10-06
AWK 可以使用關聯陣列這種資料結構,索引可以是數字或字串。AWK關聯陣列也不需要提前宣告其大小,因為它在執行時可以自動的增大或減小。

AWK 陣列介紹AWK 陣列介紹

陣列使用的語法格式:

array_name[index]=value
  1. array_name:陣列的名稱
  2. index:陣列索引
  3. value:陣列中元素所賦予的值
建立陣列

接下來看一下如何建立陣列以及如何訪問陣列元素:

$ awk 'BEGIN {
sites["runoob"]="
sites["google"]="
print sites["runoob"] "\n" sites["google"]
}'

執行以上 ,輸出結果為:


在上面的例子中,我們定義了一個站點(sites)陣列,該陣列的索引為網站英文簡稱,值為網站訪問地址。可以使用如下格式訪問陣列元素:

array_name[index]
刪除陣列元素

我們可以使用 delete 語句來刪除陣列元素,語法格式如下:

delete array_name[index

下面的例子中,陣列中的 google 元素被刪除(刪除 沒有輸出):

$ awk 'BEGIN {
sites["runoob"]="
sites["google"]="
delete sites["google"];
print fruits["google"]
}'
多維陣列

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。

下面是模擬二維陣列的例子:

$ 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[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

在陣列上可以執行很多操作,比如,使用 asort 完成陣列元素的排序,或者使用 asorti 實現陣列索引的排序等等。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2725513/,如需轉載,請註明出處,否則將追究法律責任。

相關文章