用 sed 取代錯誤轉義的引號

用 sed 取代錯誤轉義的引號

我需要清理一個非常大的 CSV,它錯誤地轉義了雙引號(\\"而不是\")。我怎樣才能替換所有實例

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

\"空間還是只有空間?

既然\我問這個問題是為了避免增加混亂。

答案1

這應該夠了:

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

這會將反斜線 ( \\) 後跟任意數量的反斜線 ( \\*) 和雙引號 ( ") 替換為反斜線後跟雙引號 ( \\")。使用sed 's/\\\\*"/\\"/g' 替換一行中出現的所有內容。

答案2

sed如果您支援擴展正規表示式的選項,則另一種選擇-E(這不計算反斜線的數量):

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

相關內容