Поиск…


Основы массива

Создание нового массива несколько запутанно, так как нет реального идентификатора для массива в 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"

Когда массив заполняется парами значений ключа, можно получить значение только с помощью ключа. Это означает, что если мы используем ключ "A" в myOtherArray мы получаем "bc" .

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"


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow