我有一个包含大量行的大文件。文件系统已满。想要删除文件中的所有行,但保留最后50000行
我想你的帮助家伙,建议我一个解决方案,以便我可以从该文件中删除所有行但不是最后50000行。我想要解决方案可以删除现有文件中的行,以便我可以留下一些空间。
我有一个包含大量行的大文件。文件系统已满。想要删除文件中的所有行,但保留最后50000行
我想你的帮助家伙,建议我一个解决方案,以便我可以从该文件中删除所有行但不是最后50000行。我想要解决方案可以删除现有文件中的行,以便我可以留下一些空间。
这种用途tail
:
tail -n 50000 file > new_file
甚至
tail -50000 file > new_file
要保存在同一文件的输出,你可以这样做:
tail -n 50000 file > new_file && mv new_file file
这将节省输出在tail
命令正确执行的情况下将会替换原始文件的临时文件。
从man tail
:
尾 - 输出文件的
-n,--lines = K
输出的最后K行,而不是最后部分最后10个;或者使用-n + K到 开始第k个
输出线使用sed
你可以说:
sed -e :a -e '$q;N;50001,$D;ba' filename
如果要修改就地文件,说:
sed -i -e :a -e '$q;N;50001,$D;ba' filename
计算文件中行的数量,然后确定第50.000th行,但最后一行开始,并读取并写入到新文件。请注意它*有*为新文件,请注意,因此在删除原始文件之前,您应该有足够的存储空间来存储这样的文件。 – Sumurai8