AWK: matrices

AWK tiene matrices asociativas y una de sus mejores ventajas es que los índices no necesitan ser un conjunto continuo de números; puede utilizar una cadena o un número como índice de matriz. Además, no es necesario declarar el tamaño de una matriz de antemano: las matrices pueden expandirse / contraerse en tiempo de ejecución.

Su sintaxis es la siguiente:

Sintaxis

array_name[index] = value

Dónde array_name es el nombre de la matriz, index es el índice de la matriz, y value es cualquier valor asignado al elemento de la matriz.

Creando Array

Para obtener más información sobre la matriz, creemos y accedamos a los elementos de una matriz.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

orange
yellow

En el ejemplo anterior, declaramos la matriz como fruitscuyo índice es el nombre de la fruta y el valor es el color de la fruta. Para acceder a los elementos de la matriz, usamosarray_name[index] formato.

Eliminar elementos de matriz

Para la inserción, usamos el operador de asignación. Del mismo modo, podemos usardeletedeclaración para eliminar un elemento de la matriz. La sintaxis de la declaración de eliminación es la siguiente:

Sintaxis

delete array_name[index]

El siguiente ejemplo elimina el elemento orange. Por tanto, el comando no muestra ningún resultado.

Ejemplo

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

Matrices multidimensionales

AWK solo admite matrices unidimensionales. Pero puede simular fácilmente una matriz multidimensional utilizando la propia matriz unidimensional.

Por ejemplo, a continuación se muestra una matriz bidimensional de 3x3:

100   200   300
400   500   600
700   800   900

En el ejemplo anterior, la matriz [0] [0] almacena 100, la matriz [0] [1] almacena 200, y así sucesivamente. Para almacenar 100 en la ubicación de la matriz [0] [0], podemos usar la siguiente sintaxis:

Sintaxis

array["0,0"] = 100

Aunque dimos 0,0como índice, estos no son dos índices. En realidad, es solo un índice con la cadena0,0.

El siguiente ejemplo simula una matriz 2-D:

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

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

También puede realizar una variedad de operaciones en una matriz, como ordenar sus elementos / índices. Para ese propósito, puede usarassort y asorti funciones