수정되지 않은 내용을 수정하지 않고 파일 일부 덮어쓰기

수정되지 않은 내용을 수정하지 않고 파일 일부 덮어쓰기

기본적으로 1GB의 콘텐츠가 포함된 할당된 파일을 만들고 싶습니다. 그런 다음 일부 명령줄 유틸리티를 사용하여 파일의 일부(예: 처음 4MB)만 덮어쓰고 나머지 파일 내용은 변경하지 않고 그대로 두고 싶습니다. cp와 dd를 확인했지만 그런 것이 없는 것 같습니다. 어쩌면 내가 잘못된 곳을 찾고 있거나 일부 옵션의 의미를 이해하지 못하는 것일 수도 있습니다.

예, 이를 위해 C 프로그램을 생성할 수 있지만 이식성을 선호하는 것은 명령줄 상황을 사용하는 것입니다.

어떤 아이디어가 있나요?

답변1

dd:

$ cat data
insertion goes here: <...>

$ cat insert
ABC 123 XYZ

$ dd if=insert skip=4 count=3 of=data seek=22 bs=1 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.001 secs (2918 bytes/sec)

$ cat data
insertion goes here: <123>

여기서 사용하는 명령은 dd4개의 청크를 입력 파일로 건너뛴 다음 3개의 청크를 읽습니다. 출력 파일에서 22개의 블록을 찾은 후 해당 블록이 출력 파일에 기록됩니다. 출력은 잘리지 않습니다. 블록은 바이트입니다.

답변2

이것은 나에게 효과적입니다.

$ echo aaaaaaaaaa > a
$ echo bbbbbbbbbb > b
$ dd if=a of=b conv=notrunc ibs=1 obs=1 seek=3 count=4
$ cat b
bbbaaaabbb

관련 정보