1

У меня есть такая строка:

'abc','D'art','abc'

Используя sed, я могу заменить D'a на ' D\'a' используя:

sed -i "s/D'a/D\\\'a/g" file1.sql

Проблема в том, что у меня огромный файл SQL, и на каждом шагу у меня появляется новая комбинация (D'A, T'b, P'a ...)... Поэтому я ищу эффективный способ обнаружения одинарных кавычек между буквами, чтобы я мог избежать их.

Любая идея?

1 ответ1

1

На практике вам может понадобиться экранировать каждую одинарную кавычку, расположенную рядом с символом «не запятая» с обеих сторон

и на каждом этапе пути у меня появляется новая комбинация (D'A, T'b, P'a ...)

Вам не нужно покрывать каждую комбинацию отдельно. Обратные ссылки вида \1 , \2 полезны здесь:

sed "s/\([^,]\)'\([^,]\)/\1\\\'\2/g"
#      ^^^^^^^^                       The 1st capture group (it matches not-a-comma)...
#                        ^^           ... is referenced here by \1.
#               ^^^^^^^^              And the 2nd one...
#                              ^^     ... is referenced here by \2.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .