使用sed从php文件中删除行

时间:2014-10-13 09:56:11

标签: php unix sed

网站遭到入侵,并且在开始<?php标记之前将代码放在每个php页面的顶行,我想使用sed通过一个命令将其从所有文件中删除。

开头
<?php if(!isset($GLOBALS["\x61\156\x75\156\x61"]))

结束
-1; ?><?php

我认为这是由旧版mailpoet(wysija)wordpress插件引起的。 http://blog.sucuri.net/2014/10/wordpress-websites-continue-to-get-hacked-via-mailpoet-plugin-vulnerability.html

我尝试了这两个问题的答案,但解决办法并没有为我删除这些内容。我很感激任何和所有的帮助,因为我不熟悉unix命令。

Mass removal of malicious line from php files

Removing a string in a PHP file with Start and End

/// EDIT

我使用的样本输入,应该从文件中删除该行,但文件保持不变,不会向终端打印任何内容

sed -i '1 s/^<\?php if(!isset($GLOBALS\[.*-1; \?>//' *.php

一旦我有这个命令工作,我想把它与find命令结合起来在整个服务器上运行

2 个答案:

答案 0 :(得分:2)

你可以试试这个GNU sed命令,

sed -r '1s/^<\?php if\(!isset\(\$GLOBALS\[.*-1; \?>//' *.php

添加内联编辑选项i以保存所做的更改。

sed -ri '1s/^<\?php if\(!isset\(\$GLOBALS\[.*-1; \?>//' *.php

答案 1 :(得分:1)

find . -name "*.php" -print0 | xargs -0 sed -ri '1s/^<\?php if\(!isset\(\$GLOBALS\[.*-1; \?>//' *.php