Escanear todos los elementos de una matriz en GAWK devuelve números en lugar de valores

StackOverflow https://stackoverflow.com/questions/1015586

  •  06-07-2019
  •  | 
  •  

Pregunta

Dada la siguiente función:

function process_pipes(text)
{
    split(text,recs,"|");
    for (field in recs){
        printf ("|%s|\n", field)
    }
}

Si la entrada es: 0987654321 | 57300 | ERROR número de cuenta no encontrado | GDUMARESQ | 0199 | 9 | N | 0 ||

¿Por qué obtengo los números a continuación en lugar del texto?

|4|
|5|
|6|
|7|
|8|
|9|
|10|
|1|
|2|
|3|
¿Fue útil?

Solución

split crea una matriz recs en su código, y recs [1] == 0987654321, etc.

El bucle for (field in recs) genera la lista de índices, no los elementos de la matriz.

Por lo tanto, necesita:

function process_pipes(text)
{
    split(text,recs,"|");
    for (field in recs){
        printf ("|%s|\n", recs[field])
    }
}

Otros consejos

Porque

for ... in 

te da las teclas . Usar

printf("|%s|\n",recs[field]);

para obtener los valores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top