큰 파일을 제자리에서 편집하려면 어떻게해야합니까?


18

각각 1GB보다 큰 파일이 몇 개 있습니다. 파일에서 마지막 몇 바이트를 제거해야합니다. 어떻게하니? 디스크 공간을 절약하기 위해 파일을 편집하는 것을 선호합니다.

HP-UX에 있습니다.


vim4G 제한이 있다고 생각 하지만 (잘못 될 수도 있음) 제자리에 있다고 생각하지 않습니다 (잘못되었을 수도 있음).
— xenoterracide

1
@xenoterracide : 여기에 vim이 없습니다 :-( vi는 "Tmp 파일이 너무 큽니다"오류를 발생시킵니다.
— Hemant

1
@Hernant :이 메시지는 편집에 대해 알아야 할 모든 것을 알려줍니다. vi는 작업을 위해 / tmp로 복사하려고합니다. vim도 같은 작업을 수행 할 것이라고 생각하고 동일한 디렉토리에 백업을 생성하고 싶습니다.
— David Thornley

답변:


10

hexedit를 사용해보십시오 HP-UX에서 시도하지는 않았지만 작동합니다. 파일의 위치로 이동하여자를 수 있습니다. 전체 파일을 읽지 않고 표시 할 적절한 위치를 찾으려고 확신합니다.

일단 시작하면 사용법이 매우 간단합니다. 화살표 키를 사용하면 움직일 수 있습니다. F1이 도움을줍니다. Ctrl-G는 파일의 위치로 이동합니다 (힌트 : 화면의 맨 아래 줄에서 파일 크기를 사용하여 끝까지 이동). 잘라낼 첫 번째 바이트에 커서를 놓은 다음 잘라내 기가 완료되었음을 확인하면 Esc 키를 누릅니다. Ctrl-x가 종료됩니다.



6

예를 들어 dd를 사용할 수 있습니다.

dd if=yourfile of=outname bs=4k count=thefirstX4kb

1
답변 주셔서 감사합니다. 디스크 공간을 절약하기 위해 파일을 편집하는 것을 선호합니다. 아무것도 도움이되지 않으면 dd :-)를 사용합니다.
— Hemant

6

truncate시스템 호출에 액세스 할 수있는 도구를 사용하십시오 . POSIX 도구로만 수행 할 수 있습니다. 브라우저에 입력 된 경고; dd일반적인 유닉스 명령어보다 에러를 용서하지 않기 때문에 특히주의 하십시오. 123456은 유지할 바이트 수입니다.

dd if=/dev/null of=/file/to/truncate seek=1 bs=123456

펄 버전은 훨씬 더 읽기 쉽다 :

perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate

1

당신은 사용할 수 있습니다 split하거나 ed, awk또는 프로그래밍 언어.


답변 주셔서 감사합니다. 디스크 공간과 메모리를 절약하기 위해 파일을 편집하는 것을 선호합니다.
— Hemant
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.