Verificação de todos os elementos de uma matriz em GAWK números de volta, em vez de valores

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Dada a seguinte função:

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

Se a entrada é: 0987654321 | 57300 | número de conta de erro não encontrada | GDUMARESQ | 0199 | 9 | N | 0 ||

Por que recebo os números abaixo em vez do texto?

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

Solução

split cria um recs array em seu código e recs[1] == 0987654321, etc.

O loop for (field in recs) gera a lista de índices, e não os elementos de matriz.

Por isso, é necessário:

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

Outras dicas

Como

for ... in 

dá-lhe as chaves . Use

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

para obter os valores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top