2010-12-10 12 views
52

ファイルのヘッダ(最初の10バイト)を取得し、別のセクションで最初の10バイトを除くすべてを取得する必要があるbashスクリプトを作成しています。これらはバイナリファイルで、最初の10バイトには\0\nが含まれています。ほとんどのユーティリティはASCIIファイルで動作するようです。この仕事を達成するための良い方法は何ですか?バイナリファイルの最初の10バイトを取得する方法

答えて

84

すでに述べたように、最初の10のバイトを取得するには:

head -c 10 

を除くすべて(少なくともGNU tail付き)最初の10のバイトを取得するには:

tail -c+11 
+2

はい。私は 'dd'のアイデアが好きでしたが、このオプションはバッファサイズの変更を必要としないので、巨大なファイルでうまく動作します。ありがとう。 – User1

26

head -c 10ここで正しいことをします。

+3

それは面白いですがこの答えは最初のものだった、それは正しいですが、他の人ははるかにupvotesを持っています。 – robert

28

ddコマンドを使用すると、バイナリファイルから任意のバイト数をコピーできます。

dd if=infile of=outfile1 bs=10 count=1 
dd if=infile of=outfile2 bs=10 skip=1 
+1

これは動作しますが、かなり遅いです。 10のBSはこれらの巨大なファイルを殺しています。最初の10バイトをスキップする簡単な方法はありますか?それはとても簡単です。 – User1

関連する問題