我正在处理超过500,000行的CSV文件。
我希望更改下面的任何行
2164-09-13 17:00:00,"""some text here""",,"moretext",
到
2164-09-13 17:00:00,"some text here",,"moretext",
有多个双引号的行,我想将它们更改为一对引号。
答案 0 :(得分:2)
鉴于您已告诉我们的内容,您只需要:
$ tr -s '"' < file
2164-09-13 17:00:00,"some text here",,"moretext",
答案 1 :(得分:1)
g用于全局(将替换不仅仅是单行上的第一个模式实例),s用于替换(s / regexp / replacement /),+被转义以便sed知道这不是文字在模式中,但是正则表达式的一部分,表示发现模式的一次或多次出现。
echo '2164-09-13 17:00:00,"""some text here""",,"moretext",' | sed 's/"\+/"/g'
答案 2 :(得分:1)
echo '2164-09-13 17:00:00,"""some text here""",,"moretext",' |awk 'gsub(/"""/,"\42")'
2164-09-13 17:00:00,"some text here",,"moretext",