Respostas:
O DareDevil do Unix comanda, ddpara o resgate!
dd if=yourfile ibs=1 skip=200 count=100
Isso começaria do byte 200 e mostraria 100 próximos bytes, ou seja, bytes 200-300. ibssignifica que o dd lê apenas um byte por vez, em vez dos 512 bytes padrão, mas ainda grava em pedaços de 512 bytes padrão. Vá e veja se ibsprejudica o desempenho, espero que não.
Você pode usar dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(possivelmente com bs=1para obter blocos de um byte, caso contrário, ele usa blocos de 512 bytes). Porém, não tenho certeza de quão eficiente é dizer a ele para escrever um byte de cada vez.
ddpodem ser encadeados (o primeiro pode cortar a peça gorda e o segundo faria um bom trabalho sobre o tubo, não no disco), mas ddnão apenas bsmas separado ibse obstambém, por isso, em pelo menos, poderia produzir com blocos maiores que a leitura.
Assumindo que o arquivo não seja excessivamente grande (por exemplo, vários GB ou mais), a canalização de um para o outro é a mais eficiente possível, além de escrever seu próprio programa para isso.
head ... file | tail ...
(Ou o contrário. Qualquer que seja.)
time dd if=file.txt | wc -l= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l= 9:05:19