awk
Tablice
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"