使用sed输出格式化查找时出现问题

使用sed输出格式化查找时出现问题,sed,find,grep,exec,Sed,Find,Grep,Exec,您好,我正在尝试为客户清除js特洛伊木马程序中的站点,它添加了: 到所有html页面 由于手动清理的文件太多,我尝试了以下方法: while read f do sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f" done < list grep -irl "<script src='http://nt02.co.in/3'></script>" ./fol

您好,我正在尝试为客户清除js特洛伊木马程序中的站点,它添加了:

到所有html页面

由于手动清理的文件太多,我尝试了以下方法:

while read f
do
    sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f"
done < list
grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list
find./-type f-exec sed-e“s\\\g”{}>{}\

问题是不允许您使用sed输出到输入。 所以我试着做一些类似的事情:

find./-type f-iname“*.new”-exec sed-e“s\\\g”{}>{}.new\

也不起作用,它输出一个名为“{}.new”的文件


关于如何纠正这一点,有什么建议吗?还是关于如何清洁的另一个解决方案?

我认为你让事情变得比需要的更复杂了。特别是,您需要使用-i标志,它允许您按照自己的意愿就地编辑文件。 你可能想要像这样的东西

sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' *.html
sed-i'//d'*.html
或者,如果你觉得更舒服,可以使用脚本,比如

for f in "dir/*.html"  
do 
    sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' $f  
done
“dir/*.html”中f的

做
sed-i'//d'$f
完成
请参见未经测试的:

find . -type f -print0 | xargs -0 perl -i.nt02 -pe "s#<script src='http://nt02.co.in/3'></script># #g"
find-键入f-print0 | xargs-0perl-i.nt02-pe“s###g”

您可能不太清楚@user379118的答案,但-i标志(或--in-place)允许您使用sed进行就地编辑,也可以在运行时创建原始文件的副本,以防万一。

谢谢您的回答! 我喜欢这样:

while read f
do
    sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f"
done < list
grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list
读取f时
做
sed-i“s####g”“$f”
完成<列表
列表是包含文件路径的文件,生成方式如下:

while read f
do
    sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f"
done < list
grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list
grep-irl'./folder/>列表