sed 替换文本-转义字符

sed 替换文本-转义字符

我有一个 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

无需通过管道传输catsed

$ 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

相关内容