2011-09-26 59 views
1

我有一个100GB的文件,需要删除它的最后两行。 我不想读它,因为它将需要大约一个小时才能到达它的底部,所以sed似乎不是一个选项。如何删除大文件的最后2行而不读取它

我的磁盘太小而无法复制该文件。

我在这里有什么选择?

谢谢。

+4

这回答在这里:http://superuser.com/questions/127786/how-to-remove-the-last-2-lines-of-a-very-large-file – Anson

回答

0

我很确定在.Net中,你可以打开一个文件流到一个文件,然后将指针移动到一个特定的字节(你可以计算),并从那里修改它。但是,我不确定当您尝试保存它时是否必须通过整个流,所以如果您只需要复制最后2行,这可能会更有用。

0

在C/POSIX中,您应该可以使用fseekSEEK_END选项从文件末尾(比如说512个字节)备份一点点,然后将那些512个字节的read备份到内存中。

从那里,你可以找出第二个最后一行开始的位置,然后使用truncateftruncate实际截断该文件。

如果最后两行超过512个字节(即,第二个最后一行的开始未显示在您读取的块中),只需将该值增加到1024并再试一次。继续下去,直到找到它。

相关问题