reemplazo de sed binario
Estaba intentando hacer unsed
reemplazo en un archivo binario, sin embargo, estoy empezando a creer que no es posible. Esencialmente, lo que quería hacer era similar a lo siguiente:
sed -bi "s/\(\xFF\xD8[[:xdigit:]]\{1,\}\xFF\xD9\)/\1/" file.jpg
La lógica que deseo lograr es: escanear a través de un archivo binario hasta el código hexadecimalFFD8
, sigue leyendo hastaFFD9
, y solo guarda lo que había entre ellos (descarta la basura antes y después, pero incluyeFFD8
yFFD9
como la parte guardada del archivo)
¿Existe una forma correcta de hacer esto? Incluso si no usased
?
EDITAR: Estaba jugando y encontré la manera más limpia de hacerlo en mi opinión. Soy consciente de que esta declaración grep actuará codicioso.
hexdump -ve '1/1 "%.2x"' dirty.jpg | grep -o "ffd8.*ffd9" | xxd -r -p > clean.jpg