[英]Replace JavaScript code of HTML files with Perl
我正在尝试在超过2000个HTML文件的<\\body>
标记之前插入一段JavaScript。 这就是我尝试过的。 但这不能完成任务。
perl -pi -w -e 's/\<\/body\>/\<div id=\"fb-root\"\>\<\/div\>
\<script type=\"text\/javascript\" src=\"https:\/\/connect.facebook.net\/en_US\/all.js\"\>\<\/script\>
\<script type=\"text\/javascript\"\>
FB.init\(\{
appId: \"446059218762070\",
status: true,
cookie: true,
xfbml: true
});
\/\* As of Jan 2012 you need to use \*\/
FB.Canvas.setAutoGrow\(2\);
\<\/script\>
\<\/body\>/g' *.html
我用perl -pi
做过其他替换脚本,效果很好
perl -pi -w -e 's/\<a href=\"index.html\"\>/\<a class=\"top_button\" href=\"index.html\"\>/g' *.html
和
perl -pi -w -e 's/\<link rel=\"STYLESHEET\" type=\"text\/css\" href=\"default.css\"\>/\<link rel=\"STYLESHEET\" type=\"text\/css\" href=\"default.css\"\>
\<script type=\"text\/javascript\" src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.4\/jquery.min.js\"\>\<\/script\>
\<script type=\"text\/javascript\" src=\"default.js\"\>\<\/script\>/g' *.html
谁能帮我? 一线Perl脚本有什么问题?
主要问题是您试图进行多行搜索和替换,但正在逐行处理文件。 以下经修改的单线应能工作:
perl -i -wpe 'BEGIN{undef $/;} s[<div id="fb-root".+?</body>][</body>]gs' *.html
请注意,我已经简化了您的搜索字符串。 不必逐个字符重复整个HTML / JavaScript序列。 在搜索字符串中还应该转义几个元字符。
我看不出它为什么会失败,但是您不必要地转义了太多字符,以至于看不到任何错误。
您不在模式或替换字符串中使用方括号,因此建议您使用方括号来分隔替换,例如
perl -i -wpe 's[</body>][<div id="fb-root"></div>
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
FB.init({
appId: "446059218762070",
status: true,
cookie: true,
xfbml: true
});
/* As of Jan 2012 you need to use */
FB.Canvas.setAutoGrow(2);
</script>
</body>]g' *.html
只是黑暗中的一枪:我想知道文件中的</body>
标签是否大写? 在这种情况下,您的比赛将失败。 我建议您添加i
修饰符(使gi
)只是为了确保。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.