У меня есть двоичный файл, который содержит читаемое имя файла *, ограниченное «namexx:» и «xx: piece», где x - любая цифра от 0 до 9 в обоих случаях.
Я работаю на Mac в Bash 5.
Я пытался использовать sed:
cat filename.xxx | sed -E 's/^.*name[0-9]{2}:(.*)[0-9]{2}:piece.*$/\1/'
Проблема в том, что регулярное выражение не использует весь файл, поэтому я получаю много случайных вещей, возвращаемых в дополнение к захваченному имени файла.
Я пытался добавить префикс sed к LC_ALL=C
, когда читал в другом ответе, что это будет обрабатывать все двоичные данные как «расходуемые» с подстановочными знаками, но это не имеет значения (и я, возможно, неправильно понял).
Я также пытался удалить начальный и конечный якоря, но это тоже не имеет значения.
* Файл представляет собой торрент-файл, из которого я просто хочу извлечь имя файла. Я посмотрел на кодирование и пытался извлечь имя файла, но оно показалось слишком сложным для тривиальной задачи.