У меня есть некоторые адресные данные, которые были экспортированы из базы данных. Если в адресе было несколько строк, экспортированные данные объединяли все строки в одну строку, а первые строки разделялись знаками доллара. Вот один из адресов:
INFORMATION DELIVERY DEPT$704 CHERRY ST$ATLANTA, GA 30332-0900
Я делю это на массив со знаком доллара и выводю три элемента массива в отдельные поля, разделенные табуляцией, с помощью printf. По какой-то причине это выглядит так:
INFORMATION DELIVERY DEPT 704 CHERRY ST "ATLANTA, GA 30332-0900"
Мне не нужны кавычки вокруг этого последнего поля. Кто-нибудь может объяснить, почему это происходит и как это подавить?
Это делается в Windows Vista с gawk3.1.6.
Спасибо!
* 1011 Гэри *
По запросу, вот код. Я использую функцию длины, чтобы мой printf
мог передавать длину для каждой прочитанной записи.
if ($6 ~ /\$/)
split($6, arr, "$")
address = arr[1]
addresstwo = arr[2]
addressthree = arr[3]
addressLength = length(address)
addressTwoLength = length(addresstwo)
addressThreeLength = length(addressthree)
else {
address = $6
addressLength = length($6)
addresstwo = ""
addressTwoLength = length(addresstwo)
addressthree = ""
addressThreeLength = length(addressthree)
}
printf("%*s\t%*s\t\%*s\n",
addressLength, address, addressTwoLength, addresstwo, addressThreeLength, addressthree)
Редактировать 19 мая: я думаю, это просто останется загадкой. Сегодня, используя тот же код и те же входные файлы, он НЕ заключает в двойные кавычки.