Exclua dados do meio de um arquivo binário com modo hexl

Exclua dados do meio de um arquivo binário com modo hexl

Eu tenho um arquivo binário bastante grande (algumas dezenas de MB) e gostaria de remover alguns KB em algum lugar no meio, são dados imprensados, não o começo nem o fim.

Idealmente, eu gostaria de usar o emacs e o modo hexl parece um candidato provável.

É possível excluir uma linha do buffer hexl? Ctrl- knão parece fazer o trabalho. Fico feliz em olhar o código, mas por alguma razão procurando por hexl-mode.el tudo que encontro é o arquivo .elc compilado em minha máquina Ubuntu 10.04 Emacs 23.1.

Além disso: em um movimento sorrateiro, gostaria de adicionar outra pergunta no modo hexl que não está diretamente relacionada à pergunta formulada no título, mas faz parte do problema completo que estou enfrentando: Seria muito útil para mim se Eu poderia exibir X caracteres hexadecimais por linha onde X obviamente muda com o formato do arquivo binário que estou editando, não consegui encontrar uma maneira de fazer isso com o modo hexl e pensei em lançar a questão aqui.

Responder1

O modo Hexl não permite excluir caracteres.Esta respostafrom stack overflow sugere uma solução alternativa: substitua os caracteres que você deseja excluir por outro caractere (diga "X"), saia do modo hexl, encontre os caracteres e exclua-os lá.

Responder2

Usarmodo nhexl(que pode ser instalado como um pacote do ELPA). O modo Nhexl é um modo secundário; o texto permanece editável no modo principal em que o buffer já estava.

Por padrão, o modo nhexl ativa o modo de substituição, mas você ainda pode excluir. Para inserir texto, desative o modo de substituição com M-x binary-overwrite-mode.

Você pode colocar o seguinte trecho de código em seu arquivo init ( ~/.emacs) para vincular a Insertchave à alternância do modo de substituição no 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)

Essetambém pode ser interessante se você usar o modo nhexl.

informação relacionada