2011-09-26 4 views
1

나는 100GB 파일을 가지고 있으며 마지막 두 줄을 지워야합니다. sed가 옵션이 아닌 것처럼 보이기까지 약 1 시간이 걸릴 것이기 때문에 나는 그것을 읽고 싶지 않습니다.거대한 파일의 마지막 2 줄을 읽지 않고 제거하는 방법

내 디스크가 너무 작아서 해당 파일을 복사 할 수 없습니다.

내 옵션에는 어떤 것들이 있습니까?

감사합니다.

+4

답변 : http://superuser.com/questions/127786/how-to-remove-the-last-2-lines-of-a-very-large-file – Anson

답변

0

나는 FileStream을 파일로 열 수 있고 포인터를 특정 바이트 (계산할 수있는)로 옮기고 거기에서 수정할 수 있습니다. 그러나 저장하려고 할 때 전체 스트림을 전달해야하는지 확실하지 않으므로 마지막 2 줄만 복사해야하는 경우이 방법이 더 유용 할 수 있습니다.

0

C/POSIX에서는 SEEK_END 옵션을 사용하여 fseek 옵션을 사용하여 파일 끝에서 약간의 내용 (512 바이트)을 백업 한 다음 51238 바이트를 메모리에 백업 할 수 있어야합니다.

그런 다음 두 번째 마지막 줄이 시작되는 위치를 정확히 파악한 다음 truncate 또는 ftruncate을 사용하여 실제로 해당 지점에서 파일을자를 수 있습니다.

마지막 두 줄이 512 바이트를 초과하면 (즉, 읽은 청크에 두 번째 마지막 줄의 시작이 표시되지 않음) 값을 1024로 높이고 다시 시도하십시오. 당신이 그것을 찾을 때까지 계속 가라.

관련 문제