GNU/Linux >> Linux の 問題 >  >> Linux

ファイル内から単一のバイト チャンクを抽出するにはどうすればよいですか?

これは古い質問ですが、別のバージョンの dd を追加したいと思います バイトの大きなチャンクに適したコマンド:

dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes

どこで $offset そして $bytes バイト単位の数値です。

トーマスの受け入れられた答えとの違いは、 bs=1 です ここには表示されません。 bs=1 入力と出力のブロック サイズを 1 バイトに設定します。これにより、抽出するバイト数が多い場合に非常に遅くなります。

これは、ブロック サイズ (bs) をそのままにしておくことを意味します。 ) デフォルトの 512 バイト。 iflag=skip_bytes,count_bytes の使用 、 dd と伝えます skip の後の値を処理する そして count ブロック量ではなくバイト量として。


head -c + tail -c

dd と比べてどうかわかりません 効率的ですが、楽しいです:

printf "123456789" | tail -c+2 | head -c3

2 番目のバイトから始まる 3 バイトを選択します:

234

こちらもご覧ください:

  • Unix/Linux でファイルから任意のチャンクを取得する方法
  • 頭のマニュアル
  • しっぽのマニュアル

dd を試す :

dd skip=102567 count=253 if=input.binary of=output.binary bs=1

オプション bs=1 ブロックサイズを設定し、dd にします 一度に 1 バイトずつ読み書きします。デフォルトのブロック サイズは 512 バイトです。

bs の値 skip の動作にも影響します と count skip の数字から および count ブロックの数 その dd それぞれスキップし、読み書きします。


Linux
  1. ターミナルウィンドウからLinuxでファイルを作成するには?

  2. 単一のファイルを RSYNC するには?

  3. filename.tar.gz ファイルを抽出する方法

  1. 巨大な tgz ファイルから単一のファイルを抽出する

  2. Linux で .dmg ファイルを抽出するには?

  3. cp -f は cp --remove-destination とどう違うのですか?

  1. Awkからファイルをキャットする方法は?

  2. Xmlファイルから単一の属性を抽出する方法は?

  3. Linuxでtar.xzファイルを抽出または解凍する方法