La scansione di tutti gli elementi di un array in GAWK restituisce numeri anziché valori
Domanda
Data la seguente funzione:
function process_pipes(text)
{
split(text,recs,"|");
for (field in recs){
printf ("|%s|\n", field)
}
}
Se l'ingresso è: 0987654321 | 57300 | Numero di conto ERRORE non trovato | GDUMARESQ | 0199 | 9 | N | 0 ||
Perché ottengo i numeri seguenti invece del testo?
|4| |5| |6| |7| |8| |9| |10| |1| |2| |3|
Soluzione
split
crea un array recs
nel tuo codice e recs [1]
== 0987654321, ecc.
Il ciclo for (field in recs)
genera l'elenco di indici, non gli elementi dell'array.
Quindi, è necessario:
function process_pipes(text)
{
split(text,recs,"|");
for (field in recs){
printf ("|%s|\n", recs[field])
}
}
Altri suggerimenti
Perché
for ... in
ti dà le chiavi . Usa
printf("|%s|\n",recs[field]);
per ottenere i valori.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow