Сканирование всех элементов массива в GAWK возвращает числа вместо значений
Вопрос
Учитывая следующую функцию:
function process_pipes(text)
{
split(text,recs,"|");
for (field in recs){
printf ("|%s|\n", field)
}
}
Если введено: 0987654321 | 57300 | Номер учетной записи ОШИБКИ не найден | GDUMARESQ | 0199 | 9 | N | 0 ||
Почему я получаю цифры ниже вместо текста?
|4| |5| |6| |7| |8| |9| |10| |1| |2| |3|
Решение
split
создает в вашем коде массив recs
и recs [1]
== 0987654321 и т. д.
Цикл for (поле в recs)
генерирует список индексов, а не элементов массива.
Следовательно, вам нужно:
function process_pipes(text)
{
split(text,recs,"|");
for (field in recs){
printf ("|%s|\n", recs[field])
}
}
Другие советы
Потому что
for ... in
дает вам ключи . Используйте
printf("|%s|\n",recs[field]);
чтобы получить значения.
Не связан с StackOverflow