У меня есть файл mysqldump, в котором я хочу заменить следующий текст <a href="/tag/
с участием <a href="http://www.mydomain.com/tag/
но не могу найти способ правильно экранировать все специальные символы.
Я использую следующую команду (+ еще несколько вариантов)
cat wordpress_posts.sql | sed 's%/<a href="\/\tag\/\/<a href="\http:/\/\www.mydomain.com/\tag/\/%g' > wordpress_posts_new.sql
но это не работает.
Кто-нибудь может помочь?
Обновление 1: оказывается, что исходная строка в mysqldump не <a href="/tag/
но <a href=\"/tag/
(обратите внимание на дополнительную обратную косую черту после символа равенства)
Вот pastebin одной строки файла SQL, который содержит строку, которую я хочу заменить: http://pastebin.com/8G5mcxpJ
Я пробовал все 3 предложенные версии команды sed, но ни одна из них не заменила указанную выше строку на <a href=\"http://www.mydomain.com/tag/
(да, я добавил обратную косую черту после символа равенства)
Вам не нужно убегать /
, вы можете просто использовать любой другой разделитель:
sed 's#<a href=\\"/tag/#<a href="http://www.mydomain.com/tag/#' wordpress_posts.sql
Не нужно трубить cat
к sed
:
$ sed 's/<a href="\/tag\//<a href="http:\/\/www.mydomain.com\/tag\//g' wordpress_posts.sql
-i
) если вы хотите$ cat wordpress_posts.sql | sed 's/\/tag\//http:\/\/www.mydomain.com\/tag\//' > wordpress_posts.sql