我需要清理一個非常大的 CSV,它錯誤地轉義了雙引號(\\"
而不是\"
)。我怎樣才能替換所有實例
\\"
\\\"
\\\\"
.....
有\"
空間還是只有空間?
既然\
我問這個問題是為了避免增加混亂。
答案1
這應該夠了:
sed 's/\\\\*"/\\"/'
這會將反斜線 ( \\
) 後跟任意數量的反斜線 ( \\*
) 和雙引號 ( "
) 替換為反斜線後跟雙引號 ( \\"
)。使用sed 's/\\\\*"/\\"/g
' 替換一行中出現的所有內容。
答案2
sed
如果您支援擴展正規表示式的選項,則另一種選擇-E
(這不計算反斜線的數量):
sed -E 's/[\]+"/\\"/g' file