2011-09-26 35 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並再試一次。繼續下去,直到找到它。

相關問題