Linux 从html中删除某些javascript
我想从html文件中删除以下javascriptLinux 从html中删除某些javascript,linux,bash,sed,Linux,Bash,Sed,我想从html文件中删除以下javascript <script src="text/javascript> alert('hello'); })(); </script> 及 通过阅读,我可以使用: sed '/<script type="text\/javascript"/,/<\/script>/d' 但它将删除所有javascript 我的具体需求是以}结尾的javascript;新行和以}catcherr{}结尾的其他行 我想使用sed
<script src="text/javascript>
alert('hello');
})();
</script>
及
通过阅读,我可以使用:
sed '/<script type="text\/javascript"/,/<\/script>/d'
但它将删除所有javascript
我的具体需求是以}结尾的javascript;新行和以}catcherr{}结尾的其他行
我想使用sed,如果不可能,那么可以使用任何类似于sed的程序,这样我就可以通过脚本运行它
感谢您抽出时间。使用awk或您选择的编程语言
awk -vRS="</script>" '/<script/ { if(/}\)\(\);|catch\(err\)/) { gsub(/script.*/,"");} }1' file
它将删除所有以}结尾的javascript块;新行或}catcherr{}
一点解释:
/text/javascript/:块从包含text/javascript的标记开始
:a:创建标签
N:读取模式空间的下一行
//!ba:如果不是关闭标签,则转到标签a
s/pattern/:如果满足条件,则删除模式空间
它已经加载了删除它的意义是什么?你是否故意省略了src属性的结尾双引号,或者这是问题中的输入错误?这只是我创建的一个示例问题。
awk -vRS="</script>" '/<script/ { if(/}\)\(\);|catch\(err\)/) { gsub(/script.*/,"");} }1' file
sed '/text\\/javascript/{:a;N;/<\/script>/!ba;s/.*})();\n\n<\/script>|.*} catch(err) {}<\/script>//}'