我有一些从数据库导出的地址数据。如果地址有多行,则导出的数据将所有行连接成一个字符串,前一行用美元符号分隔。这是其中一个地址:
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日编辑:我想这仍然是一个谜。今天,运行相同的代码和相同的输入文件,它不是双引号。
答案 0 :(得分:0)
我对Gawk并不完全熟悉,如果它有问题我感到很惊讶,但这似乎有些功能试图“有用”并格式化字符串以便在CSV中使用,这需要字段中的引号其中包括一个逗号。