Eliminar datos de la mitad de un archivo binario con modo hexl

Eliminar datos de la mitad de un archivo binario con modo hexl

Tengo un archivo binario bastante grande (unas pocas decenas de MB) y me gustaría eliminar algunos KB en algún lugar intermedio, son datos intercalados, no el principio ni el final.

Idealmente, me gustaría usar emacs y el modo hexl parece un candidato probable.

¿Es posible eliminar una línea del búfer hexl? Ctrl- kno parece hacer el trabajo. Estoy feliz de ver el código, pero por alguna razón, al buscar hexl-mode.el, todo lo que encuentro es el archivo .elc compilado en mi máquina Ubuntu 10.04, Emacs 23.1.

Además: en un movimiento furtivo me gustaría agregar otra pregunta en modo hexl que no está directamente relacionada con la pregunta tal como está redactada en el título, pero que es parte del problema completo al que me enfrento: sería muy útil para mí si Podría mostrar X caracteres hexadecimales por línea donde X obviamente cambia con el formato del archivo binario que estoy editando, no pude encontrar una manera de hacerlo con el modo hexl y pensé en lanzar la pregunta aquí.

Respuesta1

El modo Hexl no te permite eliminar caracteres.esta respuestadel desbordamiento de pila sugiere una solución alternativa: sobrescriba los caracteres que desea eliminar con otro carácter (digamos "X"), salga del modo hexl, busque los caracteres y elimínelos allí.

Respuesta2

Usarmodo nhexl(que se puede instalar como un paquete desde ELPA). El modo Nhexl es un modo menor; el texto sigue siendo editable en el modo principal en el que ya se encontraba el búfer.

De forma predeterminada, nhexl-mode activa el modo de sobrescritura, pero aún puedes eliminar. Para insertar texto, desactive el modo de sobrescritura con M-x binary-overwrite-mode.

Puede colocar el siguiente fragmento de código en su archivo de inicio ( ~/.emacs) para vincular la Insertclave para alternar el modo de sobrescritura en el modo nhexl.

(unless (boundp 'nhexl-mode-map)
  (defvar nhexl-mode-map (make-sparse-keymap)
    "Keymap used when `nhexl-mode' is active."))
(define-key nhexl-mode-map [insert] 'binary-overwrite-mode)

EsteTambién puede ser de interés si utiliza el modo nhexl.

información relacionada