dd 유틸리티를 사용하여 출력 파일에서 필요한 바이트 수를 건너뛰려면 어떻게 해야 합니까?

dd 유틸리티를 사용하여 출력 파일에서 필요한 바이트 수를 건너뛰려면 어떻게 해야 합니까?

dd 유틸리티를 사용하여 출력 파일의 특정 영역을 입력 파일로 다시 쓰고 싶습니다. 출력 파일의 첫 번째 732618바이트를 건너뛰고 거기에서 708800바이트 쓰기를 시작해야 합니다. 입력 바이트를 건너뛰는 방법만 찾았습니다. 파일을 찾았지만 출력 파일에서 정보를 찾을 수 없습니다. 건너뛰는 방법, dd를 사용하여 수행할 수 있습니까?

답변1

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

seek=NN obs출력 시작 시 크기 청크 건너뛰기

conv=notrunc출력을 자르지 않으려는 경우도 있습니다 .

$ echo abcdefghijkl > foo.txt
$ echo -n XYZ | dd bs=1 seek=3 of=foo.txt conv=notrunc
3+0 records in [...]
$ cat foo.txt
abcXYZghijkl

참고로 bs=1위와 같이 사용하면 읽거나 쓰는 바이트마다 시스템 콜을 발행하게 되므로 write()속도가 느려지게 됩니다. obs하지만 (내가 아는 한) dd부분 쓰기를 다시 시도하지 않기 때문에 전체 732618로 설정하지 않을 것 입니다.

GNU dd를 사용하면 oflag=seek_bytes조회 오프셋을 바이트로 추가하고 지정할 수 있어 보다 합리적인 블록 크기를 허용합니다.


또는 Perl을 사용하여 찾으십시오.

$ echo abcdefghijkl > foo.txt
$ echo -n XYZ | ( perl -e 'sysseek STDOUT, 3, 0;'; cat ) 1<> foo.txt
$ cat foo.txt 
abcXYZghijkl

관련 정보