Учебники

AWK — Массивы

У 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

Вы также можете выполнять различные операции над массивом, такие как сортировка его элементов / индексов. Для этого вы можете использовать функции сортировки и сортировки