Я пытался сделать замену sed
в двоичном файле, но я начинаю верить, что это невозможно. По сути, то, что я хотел сделать, было похоже на следующее:
sed -bi "s/\(\xFF\xD8[[:xdigit:]]\{1,\}\xFF\xD9\)/\1/" file.jpg
Логика, которую я хочу достичь: сканировать двоичный файл до шестнадцатеричного кода FFD8
, продолжать чтение до FFD9
и сохранять только то, что было между ними (отбрасывать мусор до и после, но включать FFD8
и FFD9
как сохраненная часть файла)
Есть ли хороший способ сделать это? Даже если не использовать sed
?
РЕДАКТИРОВАТЬ: Я просто играл и нашел самый чистый способ сделать это IMO. Я знаю, что это выражение grep будет действовать жадно.
hexdump -ve '1/1 "%.2x"' dirty.jpg | grep -o "ffd8.*ffd9" | xxd -r -p > clean.jpg