回答:
UnixコマンドのDareDevilがdd
救いに!
dd if=yourfile ibs=1 skip=200 count=100
これは、バイト200から始まり、100の次のバイト、つまりバイト200〜300を示します。ibs
ddは、デフォルトの512バイトではなく、一度に1バイトのみを読み取りますが、デフォルトの512バイトのチャンクで書き込みます。行ってibs
、パフォーマンスに悪影響を与えるかどうかを確認します。
を使用できますdd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(おそらく、bs=1
1バイトブロックを取得するために、それ以外の場合は512バイトブロックを使用します)。ただし、一度に1バイトずつ書き込むように指示するのがどれほど効率的かはわかりません。
dd
のパイプ鎖(第一は、脂肪の部分を切り取り可能性があり、第二はないディスク、パイプの上に細かい仕事をするだろう)を一緒にすることができますが、dd
持っていないだけでbs
なく、個別のibs
とobs
同様に、そうで少なくとも、読み取りよりも大きなブロックで出力できます。
ファイルが過度に大きくないと仮定すると(たとえば数GB程度)、1つのファイルから次のファイルへのパイプは、独自のプログラムを作成するのではなく、取得するのと同じくらい効率的です。
head ... file | tail ...
(またはその逆。どちらでも。)
time dd if=file.txt | wc -l
= 00:00:03s。time dd if=file.txt ibs=1 count=782090815 | wc -l
= 9:05:19