1 votos

Comando o guión para leer un archivo binario y saltar algunos bytes cada X bytes

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

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

He mirado dd documentación pero no pude averiguar si es posible usar el dd para ese propósito. Puedes hacer que dd salte bytes al principio del archivo, puedes hacer que lea X bytes de un archivo, pero no veo cómo obtener la característica que describí.

EDITAR:

Para mi propósito el comando/script debe salir a stdout, y el procesamiento leerá la salida como un stream, por lo que no ser algo así como "cat a file, do processing, cat a file". Es como "mientras que es cierto; hacer gato un archivo; hecho | el procesamiento".

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

2voto

Aleris Puntos 4674

Deberías intentar usar este script bash que escribí para ti (requiere busybox en tu Android):

Poner el guión en un archivo llamado script.bash (cambiar con tu propio camino):

#!/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 un terminal de su computadora (esto es para linux, adáptelo si usa 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 guión 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
(...)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X