我想使用MySQL加载数据infile导入一个大型CSV文件,文件用管道|
分隔,并用双引号""
括起来。许多字段是双引号内带双引号的文本数据,我在同一列中获取所有数据,因此只有在引号内包含时才需要删除额外的双引号:
示例:
|"George Kastrioti "Skanderbeg""|""|""|"1926"|
期望的输出:
|"George Kastrioti Skanderbeg"|"|"|"1926"|
尝试sed
,但没有真正的成功,任何想法或提示?
答案 0 :(得分:0)
sed ': again
s/\(|"[^"|]*\)"\([^"|]*"\)/\1\2/g
t again
s/""/"/g' YourFile
但我认为|""|
比|"|
更具逻辑性,所以这个版本应该更好(只是一个想法,不知道你的真实需要和你的样本状态1双引号仅为空值)
sed ': again
s/\(|"[^"|]*\)"\([^"|]*"\)/\1\2/g
t again' YourFile