Elimina i dati dalla metà di un file binario con modalità hexl


12

Ho un file binario abbastanza grande (poche decine di MB) e vorrei rimuovere qualche KB da qualche parte nel mezzo, i suoi dati non sono né l'inizio né la fine.

Idealmente mi piacerebbe usare emacs e la modalità hexl sembra un probabile candidato.

È possibile eliminare una riga dal buffer hexl? Ctrl- knon sembra fare il lavoro. Sono felice di guardare il codice, ma per qualsiasi motivo alla ricerca di hexl-mode.el tutto ciò che trovo è il file .elc compilato sulla mia macchina Ubuntu 10.04 Emacs 23.1.

Inoltre: in una mossa subdola, vorrei aggiungere un'altra domanda in modalità hexl che non è direttamente correlata alla domanda come formulata nel titolo, ma fa parte del problema completo che sto affrontando: sarebbe molto utile per me se Potrei visualizzare X caratteri esadecimali per riga dove X ovviamente cambia con il formato del file binario che sto modificando, non sono riuscito a trovare un modo per farlo con la modalità hexl e ho pensato di lanciare la domanda qui.

Risposte:


9

La modalità esadecimale non consente di eliminare caratteri. Questa risposta da overflow dello stack suggerisce una soluzione alternativa: sovrascrivere i caratteri che si desidera eliminare con un altro carattere (dire "X"), uscire dalla modalità hexl, trovare i caratteri ed eliminarli lì.


3

Utilizzare la modalità nhexl (che può essere installata come pacchetto da ELPA). La modalità Nhexl è una modalità minore; il testo rimane modificabile nella modalità principale in cui era già presente il buffer.

Per impostazione predefinita, la modalità nhexl attiva la modalità di sovrascrittura, ma è comunque possibile eliminarla. Per inserire il testo, disattivare la modalità di sovrascrittura con M-x binary-overwrite-mode.

Puoi inserire il seguente frammento di codice nel tuo file init ( ~/.emacs) per associare la Insertchiave per attivare / disattivare la modalità di sovrascrittura in modalità 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)

Ciò può essere interessante anche se si utilizza la modalità nhexl.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.