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

时间:2016-12-21 15:45:35

标签: linux wordpress bash sed grep

我正试图摆脱一些黑客问题。

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

我在尝试:

{  
    "name": "unixnut/template-php-project",
    "description": "A self-contained project that uses the Composer autoloader to load class files",
    "license": "GPL",
    "authors": [
        {  
            "name": "Alastair Irvine",
            "email": "alastair@plug.org.au"
        }
    ],
    "require": {},
    "include-path": ["app/include", "contrib"],
    "autoload": {
        "psr-4": {
            "XYZ\\": "app/classes/XYZ"
        }
    }
}

但是没有任何事情发生,如果我删除grep -r -l "//360cdn.win/c.css" | xargs -0 sed -e '1,9d' < {} xargs -0 from sed`结果,有人可以帮我吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

您可能希望将-i单位添加到 sed ,以便编辑文件 i n-place

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

¹,如果你的文件包含换行符等,你可能会遇到问题。 但是......如果你的网站包含带换行符的文件,你可能还有其他问题......