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