2014-12-03 59 views
0

我想要实现的是,使用Shell脚本将具有修改标记的html标记替换为文件。当我使用Shell搜索和替换时,我开始了解SED。我尝试了我的目的,但它会抛出错误。我的代码,在Shell中使用SED查找并替换HTML标记

pattern='<html style=background-color:#ffffff;>' 
replacement='<html style=background-color:#ffffff; manifest="app.appcache">' 

cat "index.html" | sed "/s/$pattern/$replacement/" > "index2.html" 

我得到下面的错误,

sed: 1: "/s/<html style=backgrou ...": invalid command code < 

从其他一些计算器问题,我试着不使用

pattern='<html style=background-color:#ffffff;>' 
replacement='<html style=background-color:#ffffff; manifest="app.appcache">' 

sed "/s/$pattern/$replacement/" <"index.html" >"index2.html" 

我得到了同样的错误。

请帮助我如何做到这一点。

回答

2

尝试

# v-- no leading slash 
sed "s/$pattern/$replacement/" index.html > index2.html 
1

应该这样做:

pattern="<html style=background-color:#ffffff;>" 
replacement="<html style=background-color:#ffffff; manifest=\"app.appcache\">" 

sed "s/$pattern/$replacement/g" index.html > index2.html 
+1

如果用''s替换模式周围的''s,则模式内部的'''将被shell丢弃。 – Wintermute 2014-12-03 08:18:48

0

感谢您的答案, 它的工作用 '@' 这是我从一个博客了

sed -e '[email protected]<html style=background-color:#ffffff;>@<html style=background-color:#ffffff; manifest="app.appcache">@g' <"index.html" >"index2.html" 
+0

错误不是'@'。看看Wintermute的答案。唯一的问题是主导的斜线。 – whoan 2014-12-03 11:53:23