[gull] Batch edit des fichiers binaires

Lloyd Dizon metal.lloyd at gmail.com
Fri Oct 5 00:38:21 CEST 2007


Salut Felix,

On 10/4/07, Félix Hauri <felix at f-hauri.ch> wrote:
> Salut,
>
> On Tue, Oct 02, 2007 at 12:15:24PM +0200, Lloyd Dizon wrote:
> > Connaissez-vous un moyen d'editer des fichier binaires en batch ?
> Hmmm. que ce soit ed, sed, tr, awk ou même perl, ce n'est pas
> du ``bash'', dans tous les cas, tu lance un processus tier
> qui traite le boulot.

Il devrait y avoir malentendu. Par BATCH, je voulais dire en groupe.
Je voulais editer des fichiers binaires en groupe--de la même manière
que j'edite les fichiers texte avec ed---qui est un line editor. A la
différence de sed, qui lui est un "input stream" editor.
Avantage de l'ed sur sed: edition des fichiers texte "on the fly"

> > Avec ed par exemple, je ferais ceci:
> >
> > ed $file << EOL
> > g/^$/d
> > w
> > q
> > EOL
> Cela sert à supprimer les lignes vides dans un fichier texte.
> comme:
> $ sed '/^$/d' < $file
> ( ou `` sed -i $file '/^$/d' '' pour modifier le fichier)
> ( ou mieux:
>   $ sed '/^[[:space:]]*$/d' < $file
>   pour supprimer egallement les lignes ne contenant que des espaces,
>   mais je crois qu'on s'éloigne du sujet ;)

Ce n'est pas exact car avec sed tu dois encore rediriger la sortie std
vers un fichier tmp car:

sed 's/tata/TOTO/' < texte.txt > texte.txt # pas possible !

Il faut faire:
sed 's/tata/TOTO/' < texte.txt > texte.tmp
mv texte.tmp texte.txt

Avec ed, c'est
ed texte.txt << EOL
 1,$ s/tata/TOTO/
 w
q
EOL


Pour un groupe (batch) de fichiers texte:

for file in *.txt ; do
ed $file << EOL
 1,$ s/tata/TOTO/
 w
q
EOL
done

On peut pas faire ceci avec des fichiers binaire car ed est orienté
edition des lignes.

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).

Donc:
ed = line editor
sed = stream editor
bed (binary ed) = block editor ??

> Maintenant, le fait est que je n'ai pas compris ta question:
> Cherches-tu à supprimer les ``lignes vides'' dans un ``fichier binaire''?

J'espère maintenant que tu as compris ma question, je poste le code en
Perl sinon (aïe).

A+
Lloyd



More information about the gull mailing list