我是Stack Overflow的新手,刚刚开始使用bash。我正在尝试从多个.htm
网页中删除Javascript。我有以下脚本:
find $1 -name "*.htm" > ./files
#for p in $(cat ./files)
#do
#sed? awk?
#done
在循环中,我需要sed
或awk
我的文件的每一行,以便完全删除所有Javascript。例如,
<script>//SomeJS</script>
<!--foo -->
<!--bar--><script src="cheeseburger.js"> <!--bar -->
<script type ="text/javascript>
/*
* SomeJS
*/
</script> <!-- more foo-->
需要输出:
<!--foo -->
<!--bar-->
<!--bar -->
<!-- more foo-->
以便删除所有JS。我花了好几个小时尝试使用sed
但是在模式匹配后被删除会导致整行被删除或者只删除了一些标记。
注意:我正在使用Cygwin。
答案 0 :(得分:2)
试试这个:
find $1 -name "*.htm" | while IFS= read -r name; do
tr '\n' '\001' <"$name" | sed \
-e $'s,<script[^>]*>,\002,g' \
-e $'s,</script>,\003,g' \
-e $'s,\002[^\003]*\003,,g' \
-e $'s,[\002\003],,g' \
| tr '\001' '\n' >"$name~" && \
mv "$name~" "$name"
done
@Ed Morton:他使用古老的HTML并没有关闭标签。