У меня есть двоичный файл, и я хотел бы удалить части из. Под удалением я подразумеваю удаление этих частей и, следовательно, уменьшение размера файла.

Части будут между двумя строками ASCII. Так, например, файл будет выглядеть так

........ start ABCD end ..... start EFGH end ..... start IJKL end ...........

Поэтому в этом файле я хотел бы найти строки "начало" и "конец" и удалить части между ними.

Я думаю, что могу сделать это, чтобы

  1. искать все места для "начала" и "конца"
  2. рассчитать диапазоны от этого
  3. удалить эти части

Сейчас я использую некоторый Hex-редактор на основе графического интерфейса и использую команды "Search All", "Select Range" и "Delete", но я уверен, что можно было бы решить это с помощью некоторых мощных шестнадцатеричных / текстовых редакторов командной строки.

Знаете ли вы какое-либо решение этой проблемы, которое не требует использования графического интерфейса пользователя для поиска, копирования и вставки в буфер обмена, выбора диапазонов и удаления команд, но это всего лишь несколько строк командной строки?

Меня интересует как сценарии оболочки Linux, так и использование некоторых шестнадцатеричных редакторов командной строки под Windows, или даже приветствия Python.

Как вы думаете, возможно ли решить эту проблему, просто заменив Regex? Есть ли регулярные выражения заменить утилиту, которая хорошо обрабатывает двоичные файлы?

1 ответ1

0

Это звучит как работа для Perl:

perl -pe 's/start.*?end//g' < inputfile.bin > outputfile.bin

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .