我基本上想创建一个分配的文件,比如说 1GB 的内容。然后希望使用一些命令行实用程序,我想就地覆盖文件的一部分,假设仅开头 4 MB,而文件内容的其余部分保持不变。我检查过 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>
我在这里使用的命令dd
会跳过 4 个块到输入文件中,然后读取 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