想要删除文件中的所有行,但保留最后50000行

时间:2013-10-25 08:37:09

标签: shell unix

我有一个巨大的文件,有很多行。文件系统已满。

我希望你的帮助人员,建议我一个解决方案,以便我可以删除该文件中的所有行,但不能删除50000行。我想要一个可以从现有文件中删除行的解决方案,这样我就可以留下一些空间。

2 个答案:

答案 0 :(得分:2)

使用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

  

tail - 输出文件的最后一部分

     

-n, - lines = K

     

输出最后K行,而不是最后10行;或者使用-n + K来   以Kth开头的输出行

答案 1 :(得分:1)

使用sed你可以说:

sed -e :a -e '$q;N;50001,$D;ba' filename

如果您想就地修改文件,请说:

sed -i -e :a -e '$q;N;50001,$D;ba' filename