web-dev-qa-db-ja.com

変更されていないコンテンツに変更を加えずにファイルの一部を上書きする

基本的に、1GBのコンテンツを含む割り当てファイルを作成したいと思います。次に、コマンドラインユーティリティを使用して、ファイルの一部をその場で上書きしたいと思います。たとえば、最初の4 MBだけを残して、残りのファイルの内容をそのままにしておきます。 cpとddを確認しましたが、このようなものはないようです。おそらく私は間違った場所を探しているか、いくつかのオプションの意味を理解していません。

はい、これを行うためのCプログラムを生成することはできますが、移植性に対する私の好みは、コマンドラインの状況を使用することです。

何か案は?

2
mdpc

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ブロックをシークした後、出力ファイルに書き込まれます。出力は切り捨てられません。 1ブロックは1バイトです。

4
Kusalananda

これは私のために働きます:

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