繁体   English   中英

用Perl替换HTML文件的JavaScript代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM