O principal problema com o uso de comandos como head
ou tail
é que eles são orientados a linhas e os arquivos binários não. Se eles possuem novas linhas, geralmente não estão sendo usados para representar o final de uma linha e, se houver, podem fazer parte de cadeias de caracteres, como mensagens de programas ou campos de dados.
Se os dados estão estruturados de alguma forma, é necessário levar isso em consideração ao escolher pontos de divisão para não quebrar estruturas no meio.
Se você conhece a estrutura do arquivo, pode usar um comando como
dd -if input-file -of output-file ...
com opções para copiar apenas tantos blocos de dados de um tamanho específico, começando em um deslocamento específico (incrementado) no arquivo.
Parece que o split
comando mencionado por @egmont automatizará esse processo para você, mas parece ser orientado por linhas por padrão, portanto, você precisará especificar opções adicionais, como --bytes count
dizer qual o tamanho de cada parte do arquivo estar.
Como uma observação lateral, se você não sabe o que há em um arquivo, mas suspeita que contém pelo menos alguns dados textuais significativos, o strings
comando é uma ótima maneira de dar uma primeira olhada para ver com o que você está lidando.
strings -n 6 file | less
encontrará todas as séries de caracteres imprimíveis com pelo menos seis caracteres e exibirá-as em um pager para que não voem no terminal. Usar um número um pouco maior que o padrão de 4 caracteres ajuda a eliminar pequenos trechos de dados que, por acaso, podem ser impressos, mas não estão sendo usados dessa maneira no arquivo.
Se mais tarde você precisar explorar o arquivo em mais detalhes com o editor binário, como hexedit
, você terá alguns pontos de referência que apontam onde algo interessante pode ser encontrado.
strings
tem uma opção - t x
que precederá cada sequência impressa com seu deslocamento no arquivo em hexadecimal (o para octal / d para decimal) para que você saiba onde encontrá-la mais tarde. Mesmo arquivos muito curtos são muito para lidar quando você precisa analisá-los caractere por caractere.
split
comando.