ファイルのヘッダー(最初の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