【发布时间】:2013-01-23 16:01:31
【问题描述】:
我有一个名为 data_export_20130206-F.csv 的 csv 文件。它包含包含双引号 (") 的数据,这使得解析非常混乱。
文件看起来有点像这样(但有更多字段)
"stuff","zipcode"
"<?xml version="1.0" encoding="utf-8" ?>","90210"
我想“转义”字段中的引号,使其看起来像这样(注意:xml 中的引号已加倍):
"stuff","zipcode"
"<?xml version=""1.0"" encoding=""utf-8"" ?>","90210"
但是当我运行这个时:
cat data_export_20130206-F.csv| sed -E 's@([^,])(\")([^,])@\1""\3@g'
不幸的是,它在每行末尾添加了一个额外的双引号,使文档无效。
"stuff","zipcode""
"<?xml version=""1.0"" encoding=""utf-8"" ?>","90210""
如何替换 csv 字段中的双引号,但不在每行添加尾随双引号?
【问题讨论】:
-
我认为这些行上可能有尾随空格。您应该首先摆脱它,然后您的
sed应该可以工作