Иногда двоичные файлы имеют форматы, которые согласованы «ранее» и имеют сегменты двоичных данных, которые имеют независимое значение. Например, двоичный файл может иметь структуру
{4 bytes of ID}{20 bytes of data}{4 bytes of checksum}
Я хочу разбить / нарезать (не знаю, какое слово лучше) такой двоичный файл в bash, выполняя одно чтение с произвольным номером размеры сегментов. Любая идея, как это сделать?
Примечание 1 : я знаю о других методах, которые позволяют сделать это более чем за 1 чтение, например, используя dd один раз для каждого сегмента:
dd if="${INPUT_FILE}" of="${OUTPUT_CRRT_SEGMENT}" skip="${START_SEGMENT}" count="${NBYTES_SEGMENT}" iflag=skip_bytes,count_bytes status=none
но в этом случае, если я прав, невозможно выполнить несколько чтений.
Примечание 2 : если этого еще не существует, я подумываю написать небольшую функцию bash, написанную в C, чтобы сделать это для меня. Как вы думаете, это разумно?
Редактировать 1 : поэтому в основном я хочу команду, которая может сделать что-то в этом роде:
chop --segments=4,20,4 "${FILE_IN}" segment-??
и это дало бы мне segment-01
, содержащий первые 4 байта, segment-02
, содержащий следующие 20, segment-03
, содержащий следующие 4 et c et c.