陣列基礎知識
建立一個新陣列有點令人困惑,因為 awk 中沒有陣列的真實識別符號。因此,使用我們的 AWK 程式碼無法真正初始化陣列。
awk 中的陣列是關聯的,這意味著任何字串或數字都可以是鍵。這意味著陣列更像是鍵值對字典,對映等。另一方面,陣列沒有最大大小。
在 AWK 中建立陣列非常簡單,因為你獲取變數名稱,正確的鍵並將其分配給變數。這意味著當執行以下程式碼時,我們已經建立了一個名為 myArray
的陣列:
BEGIN {
myArray["key"] = "value"
}
我們不一定只在開始時建立陣列。假設我們有以下輸入流:
A b c
D e f
G h i
並使用以下程式碼執行以下程式碼:
{
myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"
當陣列填充鍵值對時,只能使用鍵檢索值。這意味著如果我們在 myOtherArray
中使用關鍵 A
,我們就會得到 b-c
。
END {
print(myOtherArray["A"])
}
我們還可以選擇迴圈每個鍵以獲取每個值。迴圈遍歷陣列的每個鍵是一件簡單的事情,但是它已經崩潰了:它是未分類的。以下迴圈類似於 for-each 迴圈,它檢索金鑰:
END {
for (key in myOtherArray) {
print "myOtherArray[\"" key "\"] = " myOtherArray[key]
}
}
# Outputs (literal strings):
myOtherArray["A"] = "b-c"
myOtherArray["D"] = "e-f"
myOtherArray["G"] = "h-i"