我试图在结束前插入一段 JavaScript <\body>
超过 2000 个 HTML 文件的标签。这是我试过的。但它没有完成这项工作。
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 序列。还有几个本应在搜索字符串中转义的元字符。
关于javascript - 用 Perl 替换 HTML 文件的 JavaScript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11437315/