shell-删除脚本标记
我不熟悉堆栈溢出,刚刚开始使用bash。我正在尝试从几个shell-删除脚本标记,shell,sed,cygwin,Shell,Sed,Cygwin,我不熟悉堆栈溢出,刚刚开始使用bash。我正在尝试从几个.htm网页中删除Javascript。我有以下脚本: find $1 -name "*.htm" > ./files #for p in $(cat ./files) #do #sed? awk? #done 在循环中,我需要sed或awk文件的每一行,以便完全删除所有Javascript。那么比如说, <script>//SomeJS</script> <!--foo --> <!
.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-->
//SomeJS
试试这个:
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
find$1-name“*.htm”|而IFS=read-r name;做
tr'\n'\001'$name~“&&\
mv“$name~”“$name”
完成
@埃德·莫顿:他使用的是古老的HTML,没有关闭标签。您发布的所需输出结果将不仅仅是删除JS,因为它还删除了
之前的换行符,将第二个
之前的空格转换为换行符,并删除了之前的空格,我认为您的示例输入缺少一个
。请修复该问题,或澄清输入文件末尾的
与哪个
相关,以及原因。
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