陣列基礎知識

建立一個新陣列有點令人困惑,因為 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"