2011-04-22 71 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 /模式//:刪除模式空間是否滿足