[gull] Batch edit des fichiers binaires
Félix Hauri
felix at f-hauri.ch
Fri Oct 5 09:59:35 CEST 2007
On Fri, Oct 05, 2007 at 12:38:21AM +0200, Lloyd Dizon wrote:
>
> Il devrait y avoir malentendu. Par BATCH, je voulais dire en groupe.
Ok, comprend mieux...
> ...
> sed 's/tata/TOTO/' < texte.txt > texte.txt # pas possible !
Si!
$ sed 's/tata/TOTO/' -i texte.txt
ou
$ sed 's/tata/TOTO/' --in-place texte.txt
> Il faut faire:
> sed 's/tata/TOTO/' < texte.txt > texte.tmp
> mv texte.tmp texte.txt
Pour éviter cela, il m'est arrivé de faire:
$ sed 's/tata/TOTO/' < texte.txt | diff -u texte.txt - | patch p0
Je l'ai fait avec des gros fichiers...
pas très élégant mais fonctionnel.
M'enfin cela ne résoud pas le problème ``binaire''.
> ...
> Bref, je voulais faire une substitution du code binaire dans un
> fichier par une autre "chaine binaire", en utilisant un ed version
> binaire (s'il un tel programme existait).
Selon la nature de ta modif, (si la taille du binaire change ou non,
si les remplacement sont légers, si les chaines contiennent de l'ascii
ou des caractères de control, etc)
p. ex, si ta modif est purement ascii et que tu ne change pas la taille
de ton fichier, vi peut le faire:
$ ls -l test.jpg
-rw-r--r-- 1 felix felix 363907 2007-10-05 09:38 test.jpg
$ jpegtopnm <test.jpg | pnmfile && echo OK.
jpegtopnm: WRITING PPM FILE
stdin: PPM raw, 1280 by 960 maxval 255
OK.
$ rdjpgcom test.jpg
CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
$ sed -i test.jpg -e \
s'/gd-jpeg v1.0 (using IJG JPEG v62)/Myself with my head and my hands /'
$ ls test.jpg
-rw-r--r-- 1 felix felix 363907 2007-10-05 09:56 test.jpg
$ jpegtopnm <test.jpg | pnmfile && echo OK.
jpegtopnm: WRITING PPM FILE
stdin: PPM raw, 1280 by 960 maxval 255
OK.
$ rdjpgcom test.jpg
CREATOR: Myself with my head and my hands , default quality
Ça marche, mais il s'agit d'un cas particulier...
Par ailleur, j'ai égallement déjà utilisé VI pour des petites
modifications sur des fichiers binaires avec de bons résultats,
mais je ne l'ai jamais fait en ``batch mode''.
> Donc:
> ed = line editor
> sed = stream editor
> bed (binary ed) = block editor ??
et aussi:
$ apt-cache search editor | grep -i 'binary\|hex'
bbe - sed-like editor for binary files
beav - binary editor and viewer
biew - console hex viewer/editor with disassembler
bvi - binary file editor
ghex - GNOME Hex editor for files
hexcurse - A ncurses-based hex editor with many features
hexer - An interactive binary editor with a Vi-like interface
khexedit - KDE hex editor
le - Text Editor with block and binary operations
libgtkhex0 - GNOME Hex editor for files (shared library)
libgtkhex0-dev - GNOME Hex editor for files (development headers)
ncurses-hexedit - Edit files/disks in hex, ASCII and EBCDIC
vche - Virtual Console Hex Editor
xemacs21-gnome-mule - highly customizable text editor -- Mule binary
Tiens, peut-être que bbe:
Description: sed-like editor for binary files
Editor like sed, but for binary files. bbe performs basic byte
operations on blocks of input stream. bbe is a command line tool
developed for Unix systems.
.
Homepage: http://members.surfeu.fi/tjsa/bbe/
> ...
> J'espère maintenant que tu as compris ma question,
Oui, un poil mieux.
> je poste le code en Perl sinon (aïe).
Volontier!
(A mon adresse perso, si tu préfères;)
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list