ファイルのヘッダー(最初の10バイト)を取得してから、別のセクションで最初の10バイトを除くすべてを取得する必要があるbashスクリプトを作成しています。これらはバイナリファイルであり、最初の10バイト全体に「」\0と\n「」が含まれる可能性があります。ほとんどのユーティリティはASCIIファイルで動作するようです。このタスクを達成するための良い方法は何ですか?
回答:
すでに述べたように、最初の10バイトを取得するには:
head -c 10
最初の10バイトを除くすべてを取得するには(少なくともGNUtailでは):
tail -c+11
ddアイデアが気に入りましたが、このオプションではバッファサイズを変更する必要がないため、巨大なファイルでうまく機能します。ありがとう。
                    このddコマンドを使用して、バイナリファイルから任意のバイト数をコピーできます。
dd if=infile of=outfile1 bs=10 count=1
dd if=infile of=outfile2 bs=10 skip=1
dd  信頼できません。さまざまな理由で、要求されたよりも少ないバイトを読み取る場合があります。
                    { printf a; sleep 1; printf b; } | dd bs=2 count=1 2>/dev/null | wc -c