Buscar..


Fundamentos de la matriz

Crear una nueva matriz es un poco confuso, ya que no hay un identificador real para una matriz en awk. Por lo tanto, una matriz realmente no se puede inicializar con nuestro código AWK.

Una matriz en awk es asociativa, lo que significa que cualquier cadena o número puede ser una clave. Esto significa que la matriz es más como un diccionario de par clave-valor, mapa, etc. En otra nota, las matrices no tienen un tamaño máximo.

Crear una matriz en AWK es realmente fácil, ya que toma un nombre de variable, una clave adecuada y la asigna a una variable. Esto significa que cuando se ejecute el siguiente código, ya hemos creado una matriz llamada myArray :

BEGIN {
    myArray["key"] = "value"
}

Nosotros no estamos obligados a crear matrices solo al principio. Digamos que tenemos el siguiente flujo de entrada:

A b c
D e f
G h i

Y ejecuta el siguiente código con esto:

{
    myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"

Cuando una matriz se llena con pares de valores clave, uno puede recuperar el valor solo con la clave. Esto significa que si usamos la clave "A" en myOtherArray obtenemos "bc" .

END {
    print(myOtherArray["A"])
}

También tenemos la opción de recorrer cada clave para obtener cada valor. Hacer un bucle a través de cada clave de una matriz es algo simple de hacer, sin embargo, tiene una caída: no está clasificado. El siguiente bucle es como un bucle para cada uno, que recupera la clave:

END {
    for (key in myOtherArray) {
        print "myOtherArray[\"" key "\"] = " myOtherArray[key] 
    }
}
# Outputs (literal strings):
myOtherArray["A"] = "b-c"
myOtherArray["D"] = "e-f"
myOtherArray["G"] = "h-i"


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow