AWK 可以使用關(guān)聯(lián)數(shù)組這種數(shù)據(jù)結(jié)構(gòu),索引可以是數(shù)字或字符串。
AWK關(guān)聯(lián)數(shù) 組也不需要提前聲明其大小,因?yàn)樗谶\(yùn)行時(shí)可以自動(dòng)的增大或減小。
數(shù)組使用的語(yǔ)法格式:
array_name[index]=value
- array_name:數(shù)組的名稱
- index:數(shù)組索引
- value:數(shù)組中元素所賦予的值
創(chuàng)建數(shù)組
接下來(lái)看一下如何創(chuàng)建數(shù)組以及如何訪問(wèn)數(shù)組元素:
$ awk 'BEGIN { sites["runoob"]="www.runoob.com"; sites["google"]="www.google.com" print sites["runoob"] "n" sites["google"] }'
執(zhí)行以上命令,輸出結(jié)果為:
www.runoob.com www.google.com
在上面的例子中,我們定義了一個(gè)站點(diǎn)(sites)數(shù)組,該數(shù)組的索引為網(wǎng)站英文簡(jiǎn)稱,值為網(wǎng)站訪問(wèn)地址??梢允褂萌缦赂袷皆L問(wèn)數(shù)組元素:
array_name[index]
刪除數(shù)組元素
我們可以使用 delete 語(yǔ)句來(lái)刪除數(shù)組元素,語(yǔ)法格式如下:
delete array_name[index
下面的例子中,數(shù)組中的 google 元素被刪除(刪除命令沒(méi)有輸出):
$ awk 'BEGIN { sites["runoob"]="www.runoob.com"; sites["google"]="www.google.com" delete sites["google"]; print fruits["google"] }'
多維數(shù)組
AWK 本身不支持多維數(shù)組,不過(guò)我們可以很容易地使用一維數(shù)組模擬實(shí)現(xiàn)多維數(shù)組。
如下示例為一個(gè) 3×3 的三維數(shù)組:
100 200 300 400 500 600 700 800 900
以上實(shí)例中,array[0][0] 存儲(chǔ) 100,array[0][1] 存儲(chǔ) 200 ,依次類推。為了在 array[0][0] 處存儲(chǔ) 100, 我們可以使用如下語(yǔ)法: array[“0,0”] = 100。
我們使用了 0,0 作為索引,但是這并不是兩個(gè)索引值。事實(shí)上,它是一個(gè)字符串索引 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í)行上面的命令可以得到如下結(jié)果:
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 實(shí)現(xiàn)數(shù)組索引的排序等等。