Я пытаюсь найти команду оболочки Android, которая может читать файл, но имеет возможность пропускать, например, 512 байт каждые 1024 байта.
Существует ли такая команда и доступна ли она для Android-устройств?
Я просмотрел документацию dd , но не смог понять, можно ли использовать dd для этой цели. Можно заставить dd пропускать байты в начале файла, можно заставить читать X байтов из файла, но я не вижу, как получить ту функцию, которую я описал.
РЕДАКТИРОВАТЬ:
Для моей цели команда/скрипт должна выводить на стандартный вывод, а обработка будет считывать вывод как поток, поэтому это не будет что-то вроде «cat файл, сделать обработку, cat файл». Это как "пока верно; сделать cat файл; готово | обработка".
Список доступных команд находится здесь: http://www.busybox.net/downloads/BusyBox.html
Вы должны попробовать использовать этот bash-скрипт, который я написал для вас (требуется busybox на вашем Android):
поместите скрипт в файл с именем script.bash (измените свой собственный путь):
#!/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
Теперь в терминале на вашем компьютере (это для linux, адаптируйте, если используете Windows)
adb push script.bash /mnt/sdcard/script.bash
adb shell
bash
chmod +x /mnt/sdcard/script.bash
/mnt/sdcard/script.bash
редактировать
Это то, что скрипт делает в порядке :
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
(...)
Руи Маркес
Жиль Кено