Szukaj…


Podstawy tablic

Tworzenie nowej tablicy jest nieco mylące, ponieważ w awk nie ma prawdziwego identyfikatora tablicy. Tak więc tablicy nie można tak naprawdę zainicjować za pomocą naszego kodu AWK.

Tablica w awk jest asocjacyjna, co oznacza, że dowolny ciąg znaków lub liczba może być kluczem. Oznacza to, że tablica bardziej przypomina słownik pary klucz-wartość, mapę itp. Z drugiej strony tablice nie mają maksymalnego rozmiaru.

Tworzenie tablicy w AWK jest naprawdę łatwe, ponieważ bierzesz nazwę zmiennej, odpowiedni klucz i przypisujesz ją do zmiennej. Oznacza to, że po wykonaniu następującego kodu utworzyliśmy już tablicę o nazwie myArray :

BEGIN {
    myArray["key"] = "value"
}

Nie jesteśmy zobowiązani do tworzenia tablic tylko na początku. Powiedzmy, że mamy następujący strumień wejściowy:

A b c
D e f
G h i

I wykonaj w ten sposób następujący kod:

{
    myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"

Gdy tablica jest wypełniona parami wartości klucza, można pobrać wartość tylko za pomocą klucza. Oznacza to, że jeśli użyjemy klucza "A" w myOtherArray , otrzymamy "bc" .

END {
    print(myOtherArray["A"])
}

Mamy również opcję, aby przejrzeć każdy klucz, aby uzyskać każdą wartość. Pętlowanie przez każdy klucz tablicy jest prostą rzeczą, jednak ma to miejsce przy upadku: jest nieposortowane. Następująca pętla jest jak pętla dla każdego, która pobiera klucz:

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"


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow