Como pegar um trecho arbitrário de um arquivo no unix / linux [duplicado]

Esta questão já tem uma resposta aqui:

Como faço para extrair um único pedaço de bytes de dentro de um arquivo? 4 respostas

Eu estou tentando copiar um pedaço de um arquivo binário em um novo arquivo. Eu tenho o deslocamento de byte e comprimento do pedaço que eu quero pegar.

Eu tentei usar odd utilitário, mas isso parece ler e descartar os dados até o deslocamento, ao invés de apenas procurar (eu acho que porque dd é para copiar / converter blocos de dados). Isso torna muito lento (e mais lento quanto maior o deslocamento. Este é o comando que eu tentei:

dd if=inputfile ibs=1 skip=$offset count=$datalength of=outputfile

Eu acho que eu poderia escrever um pequeno script perl / python / whatever para abrir o arquivo, procurar o deslocamento, depois ler e gravar a quantidade necessária de dados em partes.

Existe um utilitário que suporta algo assim?