Ed ou sed en une commande

Résolu/Fermé
Jules - 25 févr. 2008 à 11:39
 Jules - 25 févr. 2008 à 12:11
Bonjour,

Je voudrais certaine modification de chaine de caractère pour un ensemble de fichiers texte.

J'ai trouvé 2 possibilités via sed et l'éditeur ed :

SED
for i in fichier1 fichier2 ... ; do sed "s/SERVICE CLIENTS/test/g" $i > "$i"_ok ; mv "$i"_ok $i ; done

L'inconvénient dans ce cas est la redirection dans un fichier tempo pour ré-écraser le fichier.

ED
Avec cet editeur, j'ai la possibilité de modifié le fiichier et de le sauvegarder :

ed fichier1

?
s/test/modif
modif

?
wq


D'où ma question ... est-ce que je peux faire ces modification via ed sur une seule ligne ? (j'ai esayé des , ; ^C en séparateur sans succès) ... ce qui me permettra de faire la meme boucle que sur mon sed. Merci pour vos réponse.

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
25 févr. 2008 à 12:03
Tiens, la syntaxe avec "ed" pour modifier un fichier :
ed -s fichier <<< $',s/SERVICE CLIENTS/test/g\nw'
Source et tutoriel : http://bash-hackers.org/wiki/doku.php/howto/edit-ed

;-))
2
Yeaaaaaaahhhh Merci c'est exactement ce que je cherchais.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
25 févr. 2008 à 11:45
Salut,

Quelle version de sed ? (sed --version)
Si supérieure à 4.0.5 tu as l'option "-i" qui permet de modifier le fichier d'origine sans passer par un fichier temporaire...
1
sed version 4.1.5
0
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
25 févr. 2008 à 11:47
Bonjour,
pour la redirection de sed, tu peux aller jeter un œil ici
1
Merci pour le lien, ça me fait 2 pistes à exploiter.

Merci à tous pour vos réponses.
0