您好我尝试使用此命令查找并将link 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" />
答案 0 :(得分:1)
由于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
答案 1 :(得分:0)
使用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
答案 2 :(得分:0)
这是最终的解决方案:
perl -i -0777pe 's/(<link\b.+href=\")(?!http)([^\"]*)(\".*?>)/<link rel=\"stylesheet\" type=\"text\/css\" href=\"www\/less\/global_bst.css\" \/>/gs' www/*.html
我希望这段代码对你也有帮助。 非常感谢你的答案。