Re: Remplacement de chaines de car. dans un fichier

Page principale

Répondre à ce message
Auteur: Nicolas TRIPON
Date:  
À: guilde
Sujet: Re: Remplacement de chaines de car. dans un fichier
Quoting Patrick Begou (Patrick.Begou@???):
> Pour cela tu peux utiliser sed. La syntaxe est tres proche de vi.
> ex: pour remplacer "Toto" par "Monsieur Toto" tu fais
>
> cat fichier_in |sed -e "s/Toto/Monsieur Toto/g" >fichier_out


Avec une seule directive, il n'y a pas besoin de -e ; il n'y a pas
besoin de 'cat' :

sed 's/alpha/beta/g' <in >out.

S'il faut faire un remplacement dans un fichier de façon non-interactive
(parce que les éditeurs interactifs sont en grève, par exemple), 'ed' est
l'outil :

echo '1,$s/alpha/beta/g%w%q' | tr '%' '\012' | ed file

Si le fichier est binaire, aucun de ces commandes ne marche ; en connaissant
la position dans le fichier, on peut toujours faire :

  (dd bs=1 count 100                        # position de 'alpha'
   dd bs=1 count=5 of=/dev/null             # longueur de 'alpha'
   echo 'beta\c'
   dd
  ) <in >out