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