[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Substitution par 'sed' une seule fois dans un fichier...



David BERCOT, dimanche 24 février 2008, 17:10:05 CET
> 
> Bonjour,

’jour,

> J'ai un petit problème avec 'sed'. Je souhaite effectuer le
> remplacement d'une expression par une autre, mais uniquement
> une seule fois dans un fichier.
> Or, si je fais 'sed s/expr1/expr2/ monfichier', si expr1 est
> présent plusieurs fois, elle sera remplacée à chaque fois.
> Les recherches que j'ai effectuées ne parlent que du nombre de
> substitutions (1, toutes, la dernière, etc...) sur une ligne,
> et pas sur un fichier...
> 
> Auriez-vous une piste ?

  Il faut gérer le test et la boucle de lecture.
  Je pense qu’un truc comme ça ferait l’affaire :

sed -e ':x;n;s/a/b/;Tx;:y;n;by'

  ou, en plus clair :

# essayer la substitution
:x         # étiquette 'x'
n          # lire une ligne
s/a/b/     # faire la substitution
Tx         # si la substitution a échoué, repartir en 'x'

# la substitution a réussi une fois
:y         # étiquette 'y'
n          # lire une ligne
by         # repartir en y

  Sed applique les instructions sur chaque ligne, donc, pour
éviter que le s/// soit appliqué à chaque ligne, il faut manger
soi-même les lignes avant la substitution (boucle avec :x) et
après (boucle avec :y).

  M’enfin, bon, il y a sûrement d’autres solutions…

-- 
 Sylvain Sauvage


Reply to: