2012-07-11 65 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