AWK數組
AWK關聯數組最好的事情之一就是 - 索引不必是連續的設定的數; 我們可以使用字符串或數字作為數組的索引。也冇有需要事先聲明數組的大小- 數組可以在運行時擴展/收縮。本教學介紹AWK數組的例子。
下麵是數組的語法:
array_name[index]=value
其中,array_name是數組的名稱,index是數組索引,value是任意值分配給數組的元素。
創建
要獲得有關數組的詳細信息,我們來創建和訪問數組的元素。
[jerry]$ awk 'BEGIN { fruits["mango"]="yellow"; fruits["orange"]="orange" print fruits["orange"] "\n" fruits["mango"] }'
在執行上麵的代碼後,得到以下結果:
orange yellow
在上麵的例子中,已經聲明數組即fruits,其索引是水果的名稱並且值是水果顏色。要訪問數組元素,使用array_name[index]格式。
刪除
為了插入我們使用賦值運算符。同樣,可以使用delete語句從數組中刪除元素。下麵是 delete 語句的語法:
delete array_name[index]
下麵的示例顯示刪除 orange 元素因此命令冇有顯示任何輸出。
[jerry]$ awk 'BEGIN { fruits["mango"]="yellow"; fruits["orange"]="orange"; delete fruits["orange"]; print fruits["orange"] }'
多維數組
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。
下麵簡單的例子模擬2-D數組:
[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"]; }'
在執行上麵的代碼後,得到以下結果:
array[0,0] = 100 array[0,1] = 200 array[0,2] = 300 array[1,0] = 400 array[1,1] = 500 array[1,2] = 600
我們還可以在排序其元素/索引於陣列執行各種操作。為了達到這個目的,可以使用AWK的asort以及asorti函數。我們將看到在後麵的章節這些函數的使用。