Ich muss eine sehr große CSV-Datei bereinigen, die fälschlicherweise doppelte Anführungszeichen ( \\"
statt \"
) enthält. Wie kann ich alle Instanzen von ersetzen?
\\"
\\\"
\\\\"
.....
mit \"
oder nur Platz?
Da dies der Fall ist, \
habe ich diese Frage gestellt, um das Chaos nicht noch weiter zu vergrößern.
Antwort1
Das hier sollte reichen:
sed 's/\\\\*"/\\"/'
Dies ersetzt einen Backslash ( \\
), gefolgt von einer beliebigen Anzahl von Backslashs ( \\*
) und einem doppelten Anführungszeichen ( "
), durch einen Backslash, gefolgt von einem doppelten Anführungszeichen ( \\"
). Verwenden Sie sed 's/\\\\*"/\\"/g
', um alle Vorkommen in einer Zeile zu ersetzen.
Antwort2
Eine Alternative, wenn Ihr sed
die Option für erweiterte reguläre Ausdrücke unterstützt -E
(hierbei wird die Anzahl der Backslashes nicht mitgezählt):
sed -E 's/[\]+"/\\"/g' file