2012-07-11 64 views
1

我想在關閉超過2000個HTML文件的<\body>標記之前插入一段JavaScript代碼。這是我嘗試過的。但它沒有完成這項工作。用Perl代替HTML文件的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腳本有什麼問題?

+0

你有沒有試過計算正則表達式的匹配?它可能是一個字母是關閉或什麼 – AJcodez 2012-07-11 16:53:12

+0

好吧,我從HTML文件中的一個HTML文件複製確切的HTML/JavaScript到腳本。這應該是正確的嗎? – Llewellyn 2012-07-11 20:05:55

+0

@WebsiteMount:刪除

2

我不明白爲什麼它會失敗,但是你不必要地逃避太多人物,以至於任何錯誤都變得不可見。

你是不是在圖案或替換字符串用方括號,所以我建議你用它們來界定替代,就像在黑暗中這

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)只是爲了確保。

+0

我剛剛嘗試過,並且出於某種奇怪的原因它說「沒有這樣的文件或目錄」。然後我只看到我給你錯誤的順序。你看我首先添加了這個JavaScript行,它的工作原理是我給的工作,但是我想再次刪除它。而改變的地方,而不是添加行,我現在想刪除它們,它不工作..我會編輯我的帖子,以顯示我剛剛使用的腳本,它仍然無法正常工作。 – Llewellyn 2012-07-11 19:56:15

+0

我得到的腳本運行時輸出錯誤「沒有這樣的文件或目錄」使用'-pi -w -e'而不是'-wpie',但它仍然不能代替HTML/JavaScript – Llewellyn 2012-07-11 20:45:15