Verificação de todos os elementos de uma matriz em GAWK números de volta, em vez de valores
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|
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