У AWK есть ассоциативные массивы, и одно из лучших преимуществ — индексы не должны быть непрерывным набором чисел; Вы можете использовать строку или число в качестве индекса массива. Кроме того, нет необходимости заранее объявлять размер массива — массивы могут расширяться / уменьшаться во время выполнения.
Его синтаксис выглядит следующим образом —
Синтаксис
array_name[index] = value
Где array_name — имя массива, index — индекс массива, а value — любое значение, присваиваемое элементу массива.
Создание массива
Чтобы лучше понять массив, давайте создадим и получим доступ к элементам массива.
пример
[jerry]$ awk 'BEGIN { fruits["mango"] = "yellow"; fruits["orange"] = "orange" print fruits["orange"] "\n" fruits["mango"] }'
Выполнив этот код, вы получите следующий результат —
Выход
orange yellow
В приведенном выше примере мы объявляем массив как фрукты , индекс которых является именем фруктов, а значение является цветом фруктов. Для доступа к элементам массива мы используем формат array_name [index] .
Удаление элементов массива
Для вставки мы использовали оператор присваивания. Точно так же мы можем использовать оператор delete для удаления элемента из массива. Синтаксис оператора удаления выглядит следующим образом:
Синтаксис
delete array_name[index]
В следующем примере удаляется оранжевый элемент. Следовательно, команда не показывает никакого вывода.
пример
[jerry]$ awk 'BEGIN { fruits["mango"] = "yellow"; fruits["orange"] = "orange"; delete fruits["orange"]; print fruits["orange"] }'
Многомерные массивы
AWK поддерживает только одномерные массивы. Но вы можете легко смоделировать многомерный массив, используя сам одномерный массив.
Например, ниже приведен трехмерный массив 3х3 —
100 200 300 400 500 600 700 800 900
В вышеприведенном примере массив [0] [0] хранит 100, массив [0] [1] хранит 200 и так далее. Чтобы сохранить 100 в массиве [0] [0], мы можем использовать следующий синтаксис —
Синтаксис
array["0,0"] = 100
Хотя мы указали 0,0 как индекс, это не два индекса. На самом деле это всего один индекс со строкой 0,0 .
В следующем примере имитируется двумерный массив:
пример
[jerry]$ awk 'BEGIN { array["0,0"] = 100; array["0,1"] = 200; array["0,2"] = 300; array["1,0"] = 400; array["1,1"] = 500; array["1,2"] = 600; # print array elements print "array[0,0] = " array["0,0"]; print "array[0,1] = " array["0,1"]; print "array[0,2] = " array["0,2"]; print "array[1,0] = " array["1,0"]; print "array[1,1] = " array["1,1"]; print "array[1,2] = " array["1,2"]; }'
Выполнив этот код, вы получите следующий результат —
Выход
array[0,0] = 100 array[0,1] = 200 array[0,2] = 300 array[1,0] = 400 array[1,1] = 500 array[1,2] = 600
Вы также можете выполнять различные операции над массивом, такие как сортировка его элементов / индексов. Для этого вы можете использовать функции сортировки и сортировки