AWK 可以使用關聯數組這種數據結構,索引可以是數字或字符串。
AWK關聯數 組也不需要提前聲明其大小,因為它在運行時可以自動的增大或減小。
數組使用的語法格式:
array_name[index]=value
- array_name:數組的名稱
- index:數組索引
- value:數組中元素所賦予的值
創建數組
接下來看一下如何創建數組以及如何訪問數組元素:
$ awk 'BEGIN { sites["runoob"]="www.runoob.com"; sites["google"]="www.google.com" print sites["runoob"] "n" sites["google"] }'
執行以上命令,輸出結果為:
www.runoob.com www.google.com
在上面的例子中,我們定義了一個站點(sites)數組,該數組的索引為網站英文簡稱,值為網站訪問地址。可以使用如下格式訪問數組元素:
array_name[index]
刪除數組元素
我們可以使用 delete 語句來刪除數組元素,語法格式如下:
delete array_name[index
下面的例子中,數組中的 google 元素被刪除(刪除命令沒有輸出):
$ awk 'BEGIN { sites["runoob"]="www.runoob.com"; sites["google"]="www.google.com" delete sites["google"]; print fruits["google"] }'
多維數組
AWK 本身不支持多維數組,不過我們可以很容易地使用一維數組模擬實現多維數組。
如下示例為一個 3×3 的三維數組:
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 實現數組索引的排序等等。