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