我想使用像这样的sed更改html文件中的所有链接
s/ <a[^>]* href="[^"]*\// <a href="\http:\/\/www.someurl.com\//g
但它不起作用。
我的链接:
<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>
我的脚本只将mylink.com/help/rss.php更改为someurl.com/help/rss.php
我需要更改为someurl.com
答案 0 :(得分:6)
在第一个斜杠之后取出空格,将所有sed
斜杠更改为|
之类的另一个字符以便于阅读,并从URL斜杠中删除所有转义。
sed 's|<a[^>]* href="[^"]*/|<a href="http://www.someurl.com/|g'
答案 1 :(得分:0)
你已经用\/
结束了它,这意味着它会转到最后一个斜杠。删除尾随\/
,它将起作用:
$ echo ' <a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \
> | sed 's/ <a[^>]* href="[^"]*/ <a href="\http:\/\/www.someurl.com\//g'
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div>
或者,根据Dennis关于分隔符的明智建议进行编辑(仍在删除搜索模式末尾的/
,现在更加明显):
$ echo '<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \
> | sed 's|<a[^>]* href="[^"]*|<a href="http://www.someurl.com/|g'
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div>