[英]find and replace with sed command and regexp
嗨,我正在尝试使用此命令查找并将rel rel标记替换为文件:
sed 's/(<link\b.+href=\")(?!http)([^\"]*)(\".*>)/someText/g' www/file.html
但这不起作用,有人可以帮我吗? 感谢我想做的一个例子是:
替换所有这些链接标签:
<!-- Common app CSS -->
<link rel="stylesheet" type="text/css" href="less/med.ui.css" />
<link rel="stylesheet" type="text/css" href="less/timeline.css" />
<link rel="stylesheet" type="text/css" href="less/animate.min.css" />
<link rel="stylesheet" type="text/css" href="less/magic.min.css" />
<!-- Common UI CSS -->
<link rel="stylesheet" type="text/css" href="js/app/common/less/common.css" />
<link rel="stylesheet" type="text/css" href="less/sidebar.css" />
<!-- Specific App CSS -->
<link rel="stylesheet" type="text/css" href="js/app/timeline/less/timeline.css" />
仅此行:
<link rel="stylesheet" type="text/css" href="js/app/globa/less/global.css" />
由于sed不支持环视,我建议您改用Perl。
perl -pe 's~(<link\b.+href=\")(?!http)([^\"]*)(\".*>)~\1js/app/globa/less/global.css" />~g' www/file.html
保存所做的更改。
perl -i -pe 's~(<link\b.+href=\")(?!http)([^\"]*)(\".*>)~\1js/app/globa/less/global.css" />~g' www/file.html
用sed做到这一点
sed -i backup.bak '/<link\b.\+href=\"/{/href="[^"]*http/!{s#\(<link .\+href="\).*#\1js/app/globa/less/global.css" />#}}' www/file.html
编辑:
要么
sed -i backup.bak '/<link\b.\+href=\"/{
/href="[^"]*http/!{
s#\(<link .\+href="\).*#\1js/app/globa/less/global.css" />#
}
}'
backup.bak
是扩展名为.bak的原始文件的备份
这是最终的解决方案:
perl -i -0777pe 's/(<link\b.+href=\")(?!http)([^\"]*)(\".*?>)/<link rel=\"stylesheet\" type=\"text\/css\" href=\"www\/less\/global_bst.css\" \/>/gs' www/*.html
我希望这段代码对您也有帮助。 非常感谢您的回答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.