문제

Linux Desktop (RHEL4)에서는 큰 파일 (> 1 gig) 내에서 다양한 바이트 (일반적으로 1000 미만)를 추출하고 싶습니다. 파일의 오프셋과 청크의 크기를 알고 있습니다.

이를 위해 코드를 작성할 수 있지만 명령 줄 솔루션이 있습니까?

이상적으로는 다음과 같습니다.

magicprogram --offset 102567 --size 253 < input.binary > output.binary
도움이 되었습니까?

해결책

노력하다 dd:

dd skip=102567 count=253 if=input.binary of=output.binary bs=1

다른 팁

이것은 오래된 질문이지만 다른 버전을 추가하고 싶습니다. dd 큰 바이트 덩어리에 더 적합한 명령 :

dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes 

어디 $offset 그리고 $bytes 바이트 단위의 숫자입니다.

토마스의 인정 된 대답과의 차이점은 그 것입니다 bs=1 여기에 나타나지 않습니다. bs=1 입력 및 출력 블록 크기를 1 바이트로 생성하므로 추출 할 바이트 수가 클 때 매우 느립니다.

DD 명령은이 모든 것을 수행 할 수 있습니다. 통화의 일부로 Seek 및/또는 Skip 매개 변수를 살펴보십시오.

head + tail

그것이 어떻게 비교되는지 잘 모르겠습니다 dd 효율성은 있지만 재미 있습니다.

printf "123456789" | tail -c+2 | head -c3

두 번째로 시작하여 3 바이트를 선택합니다.

234

또한보십시오: https://stackoverflow.com/a/1272995/895245

더 빨리

dd bs=<req len> count=1 skip=<req offset> if=input.binary of=output.binary 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top