반응형
파일 내에서 단일 바이트 청크를 어떻게 추출합니까?
Linux 데스크톱 (RHEL4)에서 큰 파일 (> 1Gig) 내에서 바이트 범위 (일반적으로 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
바이트 단위의 번호입니다.
Thomas의 대답과 다른 점 bs=1
은 여기에 나타나지 않는다는 것입니다. bs=1
입력 및 출력 블록 크기를 1 바이트로 생성하므로 추출 할 바이트 수가 많을 때 매우 느려집니다.
head -c
+ tail -c
dd
효율성과 비교하면 확실하지 않지만 재미 있습니다.
printf "123456789" | tail -c+2 | head -c3
두 번째부터 시작하여 3 바이트를 선택합니다.
234
참조 : https://stackoverflow.com/a/1272995/895245
dd 명령은이 모든 작업을 수행 할 수 있습니다. 호출의 일부로 탐색 및 / 또는 건너 뛰기 매개 변수를 확인합니다.
더 빠르게
dd bs=<req len> count=1 skip=<req offset> if=input.binary of=output.binary
반응형
'Program Tip' 카테고리의 다른 글
Google 글꼴이 Google 크롬에서 렌더링되지 않습니다. (0) | 2020.11.24 |
---|---|
TypeScript-고정 길이 배열 (0) | 2020.11.24 |
Javascript에서 현재 디렉토리 이름을 어떻게 얻을 수 있습니까? (0) | 2020.11.23 |
ArrayList : 크기는 어떻게 증가합니까? (0) | 2020.11.23 |
log4net : 특정 클래스의 메시지를 무시하도록 구성 (0) | 2020.11.23 |