簡體   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