Замена неправильно экранированных кавычек с помощью sed

Замена неправильно экранированных кавычек с помощью sed

Мне нужно очистить очень большой CSV, в котором ошибочно экранированы двойные кавычки ( \\"вместо \"). Как заменить все экземпляры

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

с \"или только с пространством?

Поскольку это так, \я задал этот вопрос, чтобы не усугублять ситуацию.

решение1

Этого должно быть достаточно:

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

Это заменяет обратную косую черту ( \\), за которой следует любое количество обратных косых черт ( \\*) и двойную кавычку ( "), на обратную косую черту, за которой следует двойная кавычка ( \\"). Используйте sed 's/\\\\*"/\\"/g' для замены всех вхождений в строке.

решение2

Альтернативный вариант, если вы sedподдерживаете -Eопцию расширенных регулярных выражений (здесь не учитывается количество обратных слешей):

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

Связанный контент