这些文件file00
通过file99
(数百个文件)命名。它们都在同一个目录中。如何获取所有一百个文件并从每个文件中删除前 10 行?我正在使用 CentOS 7。
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)
怎么运行的:
-i.bak
告诉 sed 就地修改文件,创建扩展名为 .bak 的备份文件
-n
告诉 sed 不要打印任何行,除非我们明确要求它打印。
11,$p
告诉 sed 打印从第 11 行开始到$
文件中最后一行(表示为 )的行。
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)