La scansione di tutti gli elementi di un array in GAWK restituisce numeri anziché valori

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

  •  06-07-2019
  •  | 
  •  

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|
È stato utile?

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
scroll top