
デフォルトでは、1 GBのコンテンツを含む割り当てられたファイルを作成したいと思います。その後、いくつかのコマンドラインユーティリティを使用してファイルの一部(最初の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