用 sed 替换错误转义的引号

Goo*_*bot 0 sed

我需要清理一个非常大的 CSV,它错误地转义了双引号(\\"而不是\")。我怎样才能替换所有实例

\\"
\\\"
\\\\"
.....
Run Code Online (Sandbox Code Playgroud)

\"空间还是只有空间?

既然\我问这个问题是为了避免增加混乱。

mur*_*uru 7

这应该足够了:

sed 's/\\\\*"/\\"/'
Run Code Online (Sandbox Code Playgroud)

这会将反斜杠 ( \\) 后跟任意数量的反斜杠 ( \\*) 和双引号 ( ") 替换为反斜杠后跟双引号 ( \\")。使用sed 's/\\\\*"/\\"/g' 替换一行中出现的所有内容。


sch*_*ity 6

如果您sed支持-E扩展正则表达式的选项,则另一种选择(这不计算反斜杠的数量):

sed -E 's/[\]+"/\\"/g' file
Run Code Online (Sandbox Code Playgroud)