Назад | Перейти на главную страницу

Многострочная замена Sed поверх экранированных строк

Я пытаюсь преобразовать выходной файл mysqldump в совместимый с PostgreSQL SQL. Проблема заключается в работе с экранированными строковыми значениями.

Мне нужно перейти от:

VALUES('blah blah blah','second string \'with escaped\'
quotes 
and multiple lines goes here',35,10,'meh')

кому:

VALUES(E'blah blah blah',E'second string \'with escaped\'
quotes 
and multiple lines goes here',35,10,E'meh')

Обратите внимание на добавление буквы «E» перед каждой строкой в ​​одинарных кавычках.

Как это можно сделать в sed? Также открыт для использования других механизмов регулярных выражений, если я могу передавать их в потоковом режиме (здесь речь идет о файлах размером в несколько ГБ).

Мне пришло в голову, что это не редкость, поэтому я проверил сайт PostgreSQL, чтобы узнать, есть ли у них решения - и действительно, они перечисляют несколько инструментов для работы. Надеюсь, один из них вам подходит.