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