2011-04-22 72 views
1

我想从html文件中删除以下javascript。通过阅读http://www.cyberciti.biz/faq/sed-howto-remove-lines-paragraphs/从html中删除特定的javascript

<script src="text/javascript> 
alert('hello'); 

})(); 

</script> 

<script src="text/javascript> 
alert('hello'); 
} catch(err) {}</script> 

我可以使用:

sed '/<script type="text\/javascript"/,/<\/script>/d' 

但它会删除所有的JavaScript。

我的具体要求是JavaScript的一个与})(); (new line)</script>和其他的结局结束与} catch(err) {}</script>

我想用sed,如果不可能,那么类似的sed,这样我可以通过脚本运行任何程序。

感谢您抽出宝贵时间。

+0

它已经加载取出的什么点的条件? – locrizak 2011-04-22 16:16:30

+0

您是否有意忽略'src'属性的双引号,还是在问题中输入错字? – 2011-04-22 16:17:09

+0

这只是我创建的一个示例问题。 – Amol 2011-04-22 16:41:00

回答

0

使用awk或您选择

awk -vRS="</script>" '/<script/ { if(/}\)\(\);|catch\(err\)/) { gsub(/script.*/,"");} }1' file 
0
sed '/text\\/javascript/{:a;N;/<\/script>/!ba;s/.*})();\n\n<\/script>|.*} catch(err) {}<\/script>//}' 

的编程语言,它会删除所有的JavaScript块结束与})(); (new line)</script>} catch(err) {}</script>

一个小的解释:

  • /文本/ JavaScript的/:块开始从一个标记包含text/javascript
  • :一个:创建标签
  • Ñ:读取下一行模式空间
  • /< \ script> /!ba:如果它是不是结束标记,跳转到拉布勒a
  • S /模式//:删除模式空间是否满足