Em um shell script, pode ser melhor usar cmp
do GNU diffutils. Ele compara dados para você e pode até mesmo ignorar deslocamentos --ignore-initial=SKIP1:SKIP2
, então você pode executar cmp
para cada deslocamento de setor, e ele sairá na primeira diferença que encontrar ... que é semi-eficiente, mas ainda assim, isso é MUITO cmp
chama se você quiser executá-lo para cada setor ...
Você também pode usar grep -abo
ou strings -t d
para encontrar possíveis candidatos de deslocamento de byte, mas isso depende do padrão real que você está procurando. A vantagem para estes seria uma chamada de programa para pesquisar a coisa toda, em oposição a milhares de chamadas (uma por setor).
A menos que você encontre um utilitário de linha de comando que apenas faça todo o trabalho para você, você não pode superar um pequeno script C / Go / Python que pesquisa tudo de uma só vez conforme suas necessidades. .
Sua idéia de script também funciona, mas significa apenas chamar dd
(ou read
, ou qualquer outra coisa) dentro do loop para ler um bloco de stdin por vez, provavelmente é mais lento que antes ...