operaciones de matriz awk Linux detallan

  

Procesamiento de texto con awk, en última instancia, es la matriz de transformación. Así awk matriz tiene esas características, el funcionamiento general común y lo que sucederá. Nos fijamos en algunos de la siguiente descripción, con ejemplos vamos a explicar que difiere de la siguiente. En array awk se llama una matriz asociativa (arrays asociativos), como es el número de la etiqueta puede ser una cadena. La matriz awk no tiene que declarar de antemano, no declarar el tamaño. elemento de la matriz con 0 para inicializar o una cadena vacía, lo que depende del contexto. Por ejemplo:


a, definir métodos


1: se puede utilizar como el índice de matriz numérica (subíndice)

 tarray [ ,null,null,0],1] = " Cheng MO " tarray [2] = " 800.927 y " 

2: puede utilizar la cadena como el índice de matriz (subíndice)

 tarray [" primero y "] = " Cheng y " tarray [" último y "] = " MO " tarray [" nacimiento y "] = " 800.927 y " 

utilizar impresión tarray [1] el obtenido y " Cheng MO " tarray e imprimir [2] y imprimir [" el nacimiento y "] se obtienen y " 800.927 y ".


En segundo lugar, la matriz función de correlación

[chengmo @ localhost ~] $ awk --versionGNU Awk 3.1.5

Uso versión 3.1 o superior diferentes versiones de las siguientes funciones no son necesariamente los mismos

  • para dar una matriz de longitud (método de longitud)

    [chengmo @ localhost ~] $ awk 'BEGIN {info = " se es una prueba "; lente = split (info, ta, " "); longitud de impresión (tA), lente;} '4 4

    longitud y devuelve la longitud de la cadena de la matriz, cadena Split Split matriz, la matriz se divide por la longitud de retorno.


    (uso asort):

    [chengmo @ localhost ~] $ awk 'BEGIN {info = " se trata de una prueba de "; división (información, Ta, " "); asort de impresión (tA);} '4

    asort para ordenar la matriz, devuelve la longitud de la matriz.


    array

  • contenido de la salida (no ordenado, ordenó la salida):

    [chengmo @ localhost ~] $ awk 'BEGIN {info = " , es una prueba de "; split (info, ta, " "); for (k en tA) {print k, ta [k];}} '4 test1 IT2 IS3 un


    for … en la salida, porque la matriz es una matriz asociativa, el valor predeterminado es desordenada. Así por para y hellip; en conjunto se obtiene desordenado. Si usted necesita para obtener una matriz ordenada, tenemos que conseguir a través del índice.


    [chengmo @ localhost ~] $ awk 'BEGIN {info = " se trata de una prueba de "; Tlen = split (información, TA, " "); for (k = 1; k < = tlen; k ++) {print k, ta [k];}} '1 IT2 prueba IS3 a4

    Nota: los subíndices de matriz a partir de 1, y la matriz C no es el mismo.



  • determinar la clave existe y elimine la clave:

    un método juicio equivocado:

    [chengmo @ localhost ~] $ awk 'BEGIN {tb [" "] = " A1 "; tB [" B "] = " b1 "; si (tB [" c "] = "!; 1 ") {print " no encontrado ";}; for (k en tB) {print k, tB [k];}} 'no FUNDACIÓN a1b b1c


    I anterior extraño, tB [" C "] no está definido, pero el tiempo de ciclo, encontrado para tener la presencia de la clave, su valor está vacío, a tener en cuenta aquí, las matrices awk son matriz asociativa, siempre que una referencia a su clave a través de la matriz, se automático secuencia crear modificado


    método de determinación correcta:

    [chengmo @ localhost ~] $ awk 'BEGIN {tB [" a "] = " A1 "; tB [" b "] = " b1 "; si (" C " en tB) {print " ok ";}; for (k en tB) {print k, tB [k];}} ' un a1b b1

    si (clave en array) de matriz se determina por este método contiene y " key " clave.


    elimine la clave:

    [chengmo @ localhost ~] $ awk 'BEGIN {tb [" "] = " A1 "; tB [" b "] = " b1 "; eliminar tB [" a "]; for (k en tB) {print k, tB [k];}} 'b b1


    Suprimir array [clave] puede ser eliminado, la secuencia correspondiente de valores de clave array.


    En tercer lugar, el uso de dos dimensional array (matrices multidimensionales utilizan)

    matrices multidimensionales en AWK es esencialmente matriz unidimensional, para ser más precisos, en el almacenamiento y awk no es compatible con matrices multidimensionales. awk proporciona acceso simular matriz de dos dimensiones de la lógica. Por ejemplo, se permite array [2,4] = 1 tal acceso. awk utilizar un SUBSEP cadena especial (\\ 034) como el campo de división en el ejemplo anterior, el almacenamiento de claves array matriz asociativa es en realidad 2 \\ 0344.


    similares matriz unidimensional de los miembros de prueba, matrices multidimensionales se puede utilizar si ((i, j) en array) esta sintaxis, pero el índice deben ser colocados entre paréntesis. Similar matriz unidimensional de acceso al bucle, matrices multidimensionales utilizando una para (item in array) tales atravesar la sintaxis array. Con diferente matriz unidimensional, la función de la matriz multidimensional debe dividirse () para acceder al componente de índice único. split (artículo, Suscrip, SUBSEP)


    [chengmo @ localhost ~] $ awk 'BEGIN {

    for (i = 1; i < = 9; i ++) {for (j = 1; j < = 9; j ++) {Tarr [i, j] = i * j; impresión i, " * ", j, " = ", Tarr [i, j]; }}} '1 * 1 = 11 * 2 = 21 * 3 = 31 * 4 = 41 * 5 = 51 * 6 = 6

    … …

    a través de array [k , k2] array RESUMEN obtenerse por referencia


    Segundo método:

    [chengmo @ localhost ~] $ awk 'BEGIN {for (i = 1; i < = 9.; i ++) {for (j = 1; j < = 9; j ++) {Tarr [i, j] = i * j;}} para (m en Tarr) {split (m, tarr2, SUBSEP); impresión tarr2 [ ,null,null,0],1], " * ", tarr2 [2], " = ", Tarr [m];}} '


    esperanza arrays de procesamiento awk superiores asociado útil para todos.

  • Copyright © Conocimiento de Windows All Rights Reserved