Escanear todos los elementos de una matriz en GAWK devuelve números en lugar de valores
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|
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