来自printf的输出中不需要的引号

时间:2010-05-16 00:05:58

标签: string gawk

我有一些从数据库导出的地址数据。如果地址有多行,则导出的数据将所有行连接成一个字符串,前一行用美元符号分隔。这是其中一个地址:

INFORMATION DELIVERY DEPT$704 CHERRY ST$ATLANTA, GA 30332-0900

我将它拆分为美元符号上的数组,并将三个数组元素输出到带有printf的单独的制表符分隔字段中。出于某种原因,它出现如下:

INFORMATION DELIVERY DEPT 704 CHERRY ST "ATLANTA, GA 30332-0900"

我不想在最后一个字段附近引用。任何人都可以解释为什么会发生这种情况以及如何抑制它?

这是在使用gawk3.1.6的Windows Vista中完成的。

谢谢! 加里

根据要求,这是代码。我正在使用长度函数,以便我的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)

5月19日编辑:我想这仍然是一个谜。今天,运行相同的代码和相同的输入文件,它不是双引号。

1 个答案:

答案 0 :(得分:0)

我对Gawk并不完全熟悉,如果它有问题我感到很惊讶,但这似乎有些功能试图“有用”并格式化字符串以便在CSV中使用,这需要字段中的引号其中包括一个逗号。