нежелательные кавычки в выводе из printf - PullRequest
0 голосов
/ 16 мая 2010

У меня есть некоторые адресные данные, которые были экспортированы из базы данных. Если в адресе было несколько строк, экспортированные данные объединяли все строки в одну строку, а первые строки разделялись знаками доллара. Вот один из адресов:

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 мая: я думаю, это просто останется загадкой. Сегодня, используя тот же код и те же входные файлы, он НЕ заключает в двойные кавычки.

1 Ответ

0 голосов
/ 18 мая 2010

Я не совсем знаком с Gawk и удивлен, если он виноват, но похоже, что какая-то функция пытается быть «полезной» и форматирует строки для использования в CSV, что потребует кавычек в поле включая запятую.

...