我有一个 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 文件的一行的 pastebin:http://pastebin.com/8G5mcxpJ
我尝试了 sed 命令的所有 3 个建议版本,但没有一个能用<a href=\"http://www.mydomain.com/tag/
(是的,我在等号后添加了反斜杠)替换上述字符串
答案1
无需通过管道传输cat
至sed
:
$ sed 's/<a href="\/tag\//<a href="http:\/\/www.mydomain.com\/tag\//g' wordpress_posts.sql
- 删除百分号
- 你只需要转义斜线
-i
如果需要,请指定就地编辑 (
答案2
您不必转义/
,只需使用任何其他定界符即可:
sed 's#<a href=\\"/tag/#<a href="http://www.mydomain.com/tag/#' wordpress_posts.sql
答案3
$ cat wordpress_posts.sql | sed 's/\/tag\//http:\/\/www.mydomain.com\/tag\//' > wordpress_posts.sql