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


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.