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