Andesi - forum

Forum francophone pour Debian

Vous n'êtes pas identifié(e).

#1 14/12/2006 15:04:32

e-miel
Membre
Inscription : 21/08/2004
Messages : 453

Substitution ?

Dans un fichier de configuration, j'aimerais remplacer par "salut" les valeurs de toutes les lignes commençant par "abc". Exemple :

chose=x
abc truc=y
abc bidule=z

doit devenir :

chose=x
abc truc=salut
abc bidule=salut

J'ai essayé ceci :

ed fichier  <<- EOF
    /abc
    s/=.*/=salut
    wq
EOF

mais ça ne remplace que la première ligne trouvée. Comment faire pour que ça agisse dans tout le fichier ?

Hors ligne

#2 14/12/2006 15:11:26

ledub
Membre
Lieu : Creil (60)
Inscription : 22/04/2003
Messages : 4 545

Re : Substitution ?

Et avec ce qui suit ?

ed fichier  <<- EOF
    /abc
    s/=.*/=salut/g
    wq
EOF

LeDub qui va finir par se faire prendre à consulter Andesi à son travail.


« Ne doutez pas qu'un petit nombre de personnes déterminées puisse changer le monde. En fait, ça a même toujours marché comme ça.»
Margaret Mead
---
VeoSearch est un moteur de recherche solidaire qui permet de financer des projets associatifs de développement durable par vos recherches Internet. Utilisez-le !!!

Hors ligne

#3 14/12/2006 15:20:59

e-miel
Membre
Inscription : 21/08/2004
Messages : 453

Re : Substitution ?

Sans le "g", ça ne remplace que la première occurence dans une ligne, avec le "g" ça remplace dans la ligne complète... autrement dit, dans le cas présent, ça ne change rien.

Hors ligne

#4 14/12/2006 16:57:19

e-miel
Membre
Inscription : 21/08/2004
Messages : 453

Re : Substitution ?

J'ai trouvé, en partie grâce à d'autres personnes :

sed -i '/abc/s/=.*/=salut/' fichier

a+

Hors ligne

#5 14/12/2006 18:04:43

armen
Membre
Lieu : 48°03'03" N - 04°59'55" W
Inscription : 09/03/2004
Messages : 1 937

Re : Substitution ?

Attention, ta commande va substituer les caractères situés après le signe "=" par "salut" si la ligne contient la sous-chaine "abc" (pas forcément en début de ligne)

exemple :

chose=x
abc truc=y
abc bidule=z
trucabc=w

donne

chose=x
abc truc=salut
abc bidule=salut
trucabc=salut

sed -i '/^abc/s/=.*/=salut/' fichier
donnera

chose=x
abc truc=salut
abc bidule=salut
trucabc=w

(testé sur HP-UX, donc ma commande exacte est : sed '/^abc/s/=.*/=salut/' -f fichier)

<edit cause="faute de frappe" />

Dernière modification par armen (14/12/2006 18:05:50)


"La grandeur d'un métier est peut-etre, avant tout, d'unir des hommes : il n'est qu'un luxe véritable, et c'est celui des relations humaines." Antoine de Saint-Exupéry

Hors ligne

#6 14/12/2006 19:52:34

e-miel
Membre
Inscription : 21/08/2004
Messages : 453

Re : Substitution ?

Bonne remarque : le ^ pour "début de ligne".

Hors ligne

#7 14/12/2006 19:55:45

e-miel
Membre
Inscription : 21/08/2004
Messages : 453

Re : Substitution ?

Sinon, le -i, c'est pour que le fichier de sortie soit le même que le fichier d'entrée. En fait, techniquement parlant, il y a quand même 2 fichiers ouverts durant le traitement, mais sed le supprime avant de quitter.

Hors ligne

Pied de page des forums