我想在文件中添加一列(第二位).csv
,并且希望该列的值是字符串并被引用;
以下命令会添加列但不带引号:
awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv
以下方法确实合并了引号,但由于某种原因,它.
从值中删除了最后一个(点)
awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv
所以我的值最终是“2.40”。
我该怎么办?
答案1
你似乎把引号弄错了。你需要按如下操作
awk -F"," 'BEGIN { OFS = "," } {$2="\"2.4.0\""; print}' test.csv > output.csv
某些字符不能按字面意思包含在字符串常量
("foo")
或正则表达式常量 (/foo/
) 中。相反,它们应该用转义序列表示,转义序列是以反斜杠 (\
) 开头的字符序列。转义序列的一种用途是在字符串常量中包含双引号字符。因为普通双引号结束字符串,所以必须使用它\"
来将实际的双引号字符表示为字符串的一部分。
就我能理解的行为原因而言,awk
似乎已将其解释2.4.0
为带有来自OP的额外引号的数字单词,并决定在第一个点之后失去精度。
IE
$2="\""2.4.0"\""
变得只是
$2=""2.4.0""
它awk
不再被理解为字符串。您可以通过简单地执行以下操作来重现此行为
awk 'BEGIN { print ""2.4.0"" }'
2.40
当你这样做时,结果恰好是这样
awk 'BEGIN { print 2.4.0 + 0 }'