从多个文件中删除前 10 行

sta*_*pro 5 find

这些文件file00通过file99(数百个文件)命名。它们都在同一个目录中。如何获取所有一百个文件并从每个文件中删除前 10 行?我正在使用 CentOS 7。

Joh*_*024 4

file00这将从名称范围为到的所有文件中删除前十行file99

sed -i.bak -n '11,$p' file[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)

这可能需要 GNU sed,这在 OSX 上被称为gsed。对于其他 sed,请尝试:

find file[0-9][0-9] -maxdepth 0 -type f -exec sed -i.bak -n '11,$p' {} \;
Run Code Online (Sandbox Code Playgroud)

怎么运行的:

  1. -i.bak告诉 sed 就地修改文件,创建扩展名为 .bak 的备份文件

  2. -n告诉 sed 不要打印任何行,除非我们明确要求它打印。

  3. 11,$p告诉 sed 打印从第 11 行开始到$文件中最后一行(表示为 )的行。

  4. file[0-9][0-9]是一个 shell glob,它将扩展以匹配名称由file后跟两位数字组成的所有文件。

选择

逻辑可以颠倒。我们可以(提示:JigglyNaga)删除前十行,而不是显式打印第 11 行及之后的行:

sed -i.bak '1,10d' file[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)