我的 CSV 文件如下所示:
"08d43c37-9b43-4030-b1db-558f8bc89d52","0007661355","cus_7luwjohxnnlujhwinhvhtmzc4y","[email protected]",""Chandler, Huang Kun Kwek"","08d43c37-9b43-4030-b1db-558f8bc89d52","src_mh255jar4y2eta6jfpgmocgqda","379186","0144","22","08","9A1219C06AEFEA42097ABE1E2911B5579C61E51BBB720FF658B35822B336E840",""
我的工作是将它们加载到数据库表中,但客户名称的格式不正确。用我的 sed 表达
sed -E 's/"{2}/"/g;t' <<< file.csv
,我可以改变
,""Chandler, Huang Kun Kwek"",
进入这个
,"Chandler, Huang Kun Kwek",
问题是这会将我行末尾的
,""
剥离为 ,"
并破坏我的负载。最右边的字段 90% 的时间都是空的,并用双引号括起来,但偶尔会有数据。
我尝试像这样添加否定前瞻,但它不起作用:
sed -E 's/"{2}(?!^,""$)/"/g;t' <<< file.csv
我认为问题在于我如何进行替换。我的正则表达式应该是什么来忽略每条记录末尾的
,""
?
不要逆流而上,只需恢复尾部双引号即可:
sed -E 's/"{2}/"/g;t' | sed -E 's/,"$/,""/'