鍍金池/ 教程/ Linux/ AWK數(shù)組
AWK環(huán)境安裝配置
AWK格式化打印
Awk教程
AWK控制流
AWK循環(huán)
AWK用戶自定義函數(shù)
AWK工作流程
AWK數(shù)組
AWK基本語(yǔ)法
AWK基本示例
AWK運(yùn)算符
AWK內(nèi)置函數(shù)
AWK內(nèi)置變量
AWK輸出重定向
AWK正則表達(dá)式

AWK數(shù)組

AWK關(guān)聯(lián)數(shù)組最好的事情之一就是 - 索引不必是連續(xù)的設(shè)定的數(shù); 我們可以使用字符串或數(shù)字作為數(shù)組的索引。也沒有需要事先聲明數(shù)組的大小- 數(shù)組可以在運(yùn)行時(shí)擴(kuò)展/收縮。本教程介紹AWK數(shù)組的例子。

下面是數(shù)組的語(yǔ)法:

array_name[index]=value

其中,array_name是數(shù)組的名稱,index是數(shù)組索引,value是任意值分配給數(shù)組的元素。

創(chuàng)建

要獲得有關(guān)數(shù)組的詳細(xì)信息,我們來(lái)創(chuàng)建和訪問(wèn)數(shù)組的元素。

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

在執(zhí)行上面的代碼后,得到以下結(jié)果:

orange
yellow

在上面的例子中,已經(jīng)聲明數(shù)組即fruits,其索引是水果的名稱并且值是水果顏色。要訪問(wèn)數(shù)組元素,使用array_name[index]格式。

刪除

為了插入我們使用賦值運(yùn)算符。同樣,可以使用delete語(yǔ)句從數(shù)組中刪除元素。下面是 delete 語(yǔ)句的語(yǔ)法:

delete array_name[index]

下面的示例顯示刪除 orange 元素因此命令沒有顯示任何輸出。

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

多維數(shù)組

AWK只支持一維數(shù)組。但是我們可以很容易地模擬使用一維陣列本身的多維陣列。

例如下面是3×3的三維陣列:

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

雖然我們已經(jīng)給定0,0為索引,這些都不是兩個(gè)索引。在現(xiàn)實(shí)中,它只是一個(gè)索引以字符串0,0。

下面簡(jiǎn)單的例子模擬2-D數(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

我們還可以在排序其元素/索引于陣列執(zhí)行各種操作。為了達(dá)到這個(gè)目的,可以使用AWK的asort以及asorti函數(shù)。我們將看到在后面的章節(jié)這些函數(shù)的使用。