Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用sed替换URL_Bash_Sed - Fatal编程技术网

Bash 用sed替换URL

Bash 用sed替换URL,bash,sed,Bash,Sed,我想像这样使用sed更改html文件中的所有链接 s/ <a[^>]* href="[^"]*\// <a href="\http:\/\/www.someurl.com\//g s/ 我的脚本仅将mylink.com/help/rss.php更改为someurl.com/help/rss.php 我只需要更改为someurl.com您以\/结束它,这意味着它将转到最后一个斜杠。移除尾随的\/,它将工作: $ echo ' <a href="http://www.my

我想像这样使用sed更改html文件中的所有链接

s/ <a[^>]* href="[^"]*\// <a href="\http:\/\/www.someurl.com\//g
s/
我的脚本仅将mylink.com/help/rss.php更改为someurl.com/help/rss.php


我只需要更改为someurl.com

您以
\/
结束它,这意味着它将转到最后一个斜杠。移除尾随的
\/
,它将工作:

$ 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>

去掉第一个斜杠后的空格,将所有
sed
斜杠更改为另一个字符,如
|
,以确保可读性,并删除URL斜杠中的所有转义

sed 's|<a[^>]* href="[^"]*/|<a href="http://www.someurl.com/|g'

sed的|]*href=“[^”]*/|正则表达式的工作原理与我预期的一样。你希望结果是什么样的?
$ 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>
sed 's|<a[^>]* href="[^"]*/|<a href="http://www.someurl.com/|g'