誤ってエスケープされた引用符を sed で置き換える

誤ってエスケープされた引用符を sed で置き換える

非常に大きなCSVをクリーンアップする必要があります。二重引用符 ( )\\"が誤ってエスケープされています\"

\\"
\\\"
\\\\"
.....

それとも\"スペースだけ?

そうなってしまったので\、混乱を招かないようにこの質問をしました。

答え1

これで十分でしょう:

sed 's/\\\\*"/\\"/'

これは、バックスラッシュ ( \\) の後に任意の数のバックスラッシュ ( \\*) と二重引用符 ( ") が続くものを、バックスラッシュの後に二重引用符 ( \\") が続くものに置き換えます。sed 's/\\\\*"/\\"/g行内のすべての出現箇所を置き換えるには、' を使用します。

答え2

sed拡張正規表現のオプションをサポートしている場合の代替手段-E(バックスラッシュの数はカウントされません):

sed -E 's/[\]+"/\\"/g' file

関連情報