Eliminar datos del medio de un archivo binario con modo hexl


12

Tengo un archivo binario bastante grande (unas pocas decenas de MB) y me gustaría eliminar algunos KB en algún punto 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 buscando hexl-mode.el todo lo que encuentro es el archivo compilado .elc 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 como está redactada en el título, pero 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í.

Respuestas:


9

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


3

Use nhexl-mode (que se puede instalar como un paquete de ELPA). Nhexl-mode es un modo menor; el texto permanece editable en el modo principal en el que el búfer ya estaba.

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

Puede poner el siguiente fragmento de código en su archivo de inicio ( ~/.emacs) para vincular la Insertclave al modo de sobrescritura de alternar en 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)

Esto también puede ser de interés si usa nhexl-mode.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.