AWK - Arrays

AWK tem matrizes associativas e uma das melhores coisas sobre isso é - os índices não precisam ser conjuntos contínuos de números; você pode usar string ou número como um índice de array. Além disso, não há necessidade de declarar o tamanho de um array com antecedência - os arrays podem expandir / diminuir em tempo de execução.

Sua sintaxe é a seguinte -

Sintaxe

array_name[index] = value

Onde array_name é o nome da matriz, index é o índice da matriz, e value é qualquer valor atribuído ao elemento da matriz.

Criando Array

Para obter mais informações sobre o array, vamos criar e acessar os elementos de um array.

Exemplo

[jerry]$ awk 'BEGIN {
   fruits["mango"] = "yellow";
   fruits["orange"] = "orange"
   print fruits["orange"] "\n" fruits["mango"]
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

orange
yellow

No exemplo acima, declaramos a matriz como fruitscujo índice é o nome da fruta e o valor é a cor da fruta. Para acessar os elementos do array, usamosarray_name[index] formato.

Excluindo Elementos do Array

Para inserção, usamos o operador de atribuição. Da mesma forma, podemos usardeletedeclaração para remover um elemento da matriz. A sintaxe da instrução delete é a seguinte -

Sintaxe

delete array_name[index]

O exemplo a seguir exclui o elemento orange. Portanto, o comando não mostra nenhuma saída.

Exemplo

[jerry]$ awk 'BEGIN {
   fruits["mango"] = "yellow";
   fruits["orange"] = "orange";
   delete fruits["orange"];
   print fruits["orange"]
}'

Matrizes multidimensionais

AWK suporta apenas matrizes unidimensionais. Mas você pode simular facilmente uma matriz multidimensional usando a própria matriz unidimensional.

Por exemplo, abaixo está uma matriz bidimensional 3x3 -

100   200   300
400   500   600
700   800   900

No exemplo acima, array [0] [0] armazena 100, array [0] [1] armazena 200 e assim por diante. Para armazenar 100 na localização da matriz [0] [0], podemos usar a seguinte sintaxe -

Sintaxe

array["0,0"] = 100

Embora demos 0,0como índice, não são dois índices. Na realidade, é apenas um índice com a string0,0.

O exemplo a seguir simula uma matriz 2-D -

Exemplo

[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"];
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600

Você também pode realizar uma variedade de operações em uma matriz, como classificar seus elementos / índices. Para isso, você pode usarassort e asorti funções