Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell-删除脚本标记_Shell_Sed_Cygwin - Fatal编程技术网

shell-删除脚本标记

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 --> <!

我不熟悉堆栈溢出,刚刚开始使用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-->
//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