Comando o script para leer un archivo binario y omitir algunos bytes cada X bytes

Estoy tratando de encontrar un comando de shell de Android que pueda leer un archivo pero que tenga el poder de omitir, por ejemplo, 512 bytes cada 1024 bytes.

¿Existe tal comando y está disponible para dispositivos Android?

Miré la documentación de dd pero no pude averiguar si es posible usar dd para ese propósito. Puede hacer que dd omita bytes al comienzo del archivo, puede hacer que lea X ​​bytes de un archivo, pero no veo cómo obtener la función que describí.

EDITAR:

Para mi propósito, el comando/secuencia de comandos debe salir a la salida estándar, y el procesamiento leerá la salida como una secuencia, por lo que no será algo como "cat un archivo, procesamiento, cat un archivo". Es como "si bien es cierto; haz un archivo; listo | procesamiento".

La lista de comandos disponibles está aquí: http://www.busybox.net/downloads/BusyBox.html

Respuestas (1)

Debería intentar usar este script bash que escribí para usted (requiere busybox en su Android):

coloque el script en un archivo llamado script.bash (cambie con su propia ruta):

#!/system/xbin/bash
# sputnick 20120928 http://android.stackexchange.com/posts/30069

binfile=<THE PATH OF YOUR BIN FILE>
bytes=$(wc -c < $binfile)
c=0 count=0

while ((count < bytes - (1024+512) )); do
    dd 2>/dev/null if=$binfile bs=512 count=2 skip=$c
    printf '\n\n'
    ((count += 1024+512 ))
    ((c+=3))
done

Ahora, en una terminal de tu computadora (esto es para linux, adáptalo si usas Windows)

adb push script.bash /mnt/sdcard/script.bash
adb shell
bash
chmod +x /mnt/sdcard/script.bash
/mnt/sdcard/script.bash

editar

Esto es lo que hace el script in-fine :

dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=0
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=3
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=6
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=9
(...)
Eso ciertamente debería funcionar, pero veo dos detalles que podrían mejorarse para mi propósito. Primero quiero que salga a la salida estándar y no a varios archivos. Creo que puedes arreglar eso simplemente eliminando la opción de. La otra cosa es que no sé si llamar a dd varias veces genera una sobrecarga de abrir/cerrar el archivo varias veces, lo que hace que el proceso sea menos eficiente de lo que debería ser.
El guión fue editado para adaptarse a sus necesidades. Si conoces una forma mejor que llamar a dd varias veces, dime cómo ;)