删除双引号内的双引号

时间:2014-03-05 15:36:15

标签: mysql csv sed load-data-infile

我想使用MySQL加载数据infile导入一个大型CSV文件,文件用管道|分隔,并用双引号""括起来。许多字段是双引号内带双引号的文本数据,我在同一列中获取所有数据,因此只有在引号内包含时才需要删除额外的双引号:

示例:

|"George Kastrioti "Skanderbeg""|""|""|"1926"|

期望的输出:

|"George Kastrioti Skanderbeg"|"|"|"1926"|

尝试sed,但没有真正的成功,任何想法或提示?

1 个答案:

答案 0 :(得分:0)

sed ': again
s/\(|"[^"|]*\)"\([^"|]*"\)/\1\2/g
t again
s/""/"/g' YourFile

但我认为|""||"|更具逻辑性,所以这个版本应该更好(只是一个想法,不知道你的真实需要和你的样本状态1双引号仅为空值)

sed ': again
s/\(|"[^"|]*\)"\([^"|]*"\)/\1\2/g
t again' YourFile