【发布时间】:2020-08-31 13:51:53
【问题描述】:
我有以下 CSV 文件:
ID,COUNTRY,DESCRIPTION,PRICE
1,USA,Short description,11
2,UK,"Description with comma , inside",2.3
因此,如果字段包含逗号,则将其放在双引号中。
如何将分隔符从逗号替换为制表符但忽略引号中的逗号?所以我会有:
ID COUNTRY DESCRIPTION PRICE
1 USA Short description 11
2 UK "Description with comma , inside" 2.3
或不带双引号:
ID COUNTRY DESCRIPTION PRICE
1 USA Short description 11
2 UK Description with comma , inside 2.3
在注意到某些字段包含逗号之前,我使用了这段代码:
$VAR='\t'
sed -i $"s/,/$VAR/" $FILE_NAME
【问题讨论】:
-
开 所以强烈鼓励在问题中增加努力。因此,请在您的问题中以代码的形式添加您的努力,然后让我们知道。
-
搞错了,已编辑
-
查看
csvkit工具。 -
您不需要将数据中的制表符转换为空白或其他内容,这样您最终不会得到比开始时更多的字段吗?另请参阅whats-the-most-robust-way-to-efficiently-parse-csv-using-awk。