需要删除grep结果文件的前N行

6

我正在尝试解决我的一些WordPress安装程序中的黑客问题。

这个人在我的服务器上的多个文件头部插入了9行代码... 我正在尝试使用grep和sed来解决这个问题。

我正在尝试:

grep -r -l  "//360cdn.win/c.css" | xargs -0 sed -e '1,9d' < {}

但是如果我从xargs中删除-0,虽然找到的文件结果干净,但它们没有用sed的结果覆盖原始文件,请问有人可以帮忙吗?

非常感谢!

2个回答

2

在使用grep命令时,您应该使用--null选项,以在grep输出中的每个文件名后输出一个NUL字节或\0。此外,在每个文件中进行内联编辑时,请使用-i.bak选项来使用sed命令:

grep -lR --null '//360cdn.win/c\.css' . | xargs -0 sed -i.bak '1,9d'

1
非常感谢!!!我已经尝试解决这个问题4个小时了!! =D - Renan Corrêa Pinto
1
@RenanCorrêaPinto 在 [so] 上表达“谢谢”的方式是通过接受(和/或点赞)一个答案。 - umläute

0

直接迭代文件有什么问题¹?

你可能想要添加-i标志到sed,以便文件可以被就地编辑。

grep -r -l  "//360cdn.win/c.css" | while read f
do
   sed -e '1,9d' -i "${f}"
done

嗯,如果您的文件包含换行符等内容,则可能会遇到问题。 但是...如果您的网站包含带有换行符的文件,则您可能已经有其他问题了...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接