AWK 數(shù)組

2019-08-10 14:39 更新

數(shù)組  

AWK 有關(guān)聯(lián)數(shù)組這種數(shù)據(jù)結(jié)構(gòu),而這種數(shù)據(jù)結(jié)構(gòu)最好的一個(gè)特點(diǎn)就是它的索引值不需要是連續(xù)的整數(shù)值。我們既可以使用數(shù)字也可以使用字符串作為數(shù)組的索引。除此之外,關(guān)聯(lián)數(shù)組也不需要提前聲明其大小,因?yàn)樗谶\(yùn)行時(shí)可以自動(dòng)的增大或減小。這一章節(jié)中將會(huì)講解 AWK 數(shù)組的使用方法。

如下為數(shù)組使用的語(yǔ)法格式:

array_name[index]=value

其中 array_name 是數(shù)組的名稱,index 是數(shù)組索引,value 為數(shù)組中元素所賦予的值。

創(chuàng)建數(shù)組

為了進(jìn)一步了解數(shù)組,我們先來(lái)看一下如何創(chuàng)建數(shù)組以及如何訪問(wèn)數(shù)組元素:

[jerry]$ awk 'BEGIN {
fruits["mango"]="yellow";
fruits["orange"]="orange"
print fruits["orange"] "\n" fruits["mango"]
}'

執(zhí)行上面的命令可以得到如下的結(jié)果:

orange
yellow

在上面的例子中,我們定義了一個(gè)水果(fruits)數(shù)組,該數(shù)組的索引為水果名稱,值為水果的顏色??梢允褂萌缦赂袷皆L問(wèn)數(shù)組元素:

array_name[index] 

刪除數(shù)組元素

插入元素時(shí)我們使用賦值操作符。刪除數(shù)組元素時(shí),我們則使用 delete 語(yǔ)句。如下所示:

delete array_name[index]

下面的例子中,數(shù)組中的 orange 元素被刪除(刪除命令沒(méi)有輸出):

[jerry]$ awk 'BEGIN {
fruits["mango"]="yellow";
fruits["orange"]="orange";
delete fruits["orange"];
print fruits["orange"]
}'

多維數(shù)組

AWK 本身不支持多維數(shù)組,不過(guò)我們可以很容易地使用一維數(shù)組模擬實(shí)現(xiàn)多維數(shù)組。

如下示例為一個(gè) 3x3 的三維數(shù)組:

100 200 300
400 500 600
700 800 900

上面的示例中,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ù)組的例子:

[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"];
}'

執(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ù)組索引的排序等等。我們會(huì)在后面的章節(jié)中介紹可以對(duì)數(shù)組進(jìn)行操作的函數(shù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)