Posez votre question Signaler

Commande SED , rempalcer à partir de... [Résolu]

ponpon27 38Messages postés 11 octobre 2007Date d'inscription 22 novembre 2010Dernière intervention - Dernière réponse le 11 avril 2008 à 09:45
Bonjour,
Voici donc ce qui m'amene...
J'aimerai , dans un fichier, remplacer une chaine de caractere que je ne connais pas, mais qui se situe aprés une autre chaine de caracterre , elle, identifiée...
en gros, jaimerai mettre a ce jour un fichier contenant:
blabla blabla bla bla TOTO xxxx
et changer cette phrase par
blabla blabla bla bla TOTO yyyy
Il me semble qu'avec SED je peut le faire mais mon soucis et syntaxique, et jaiemrais donc savoir comment ecire : " change tout se qui suit sur la ligne qui contient xxxx , et ceci à partir de xxxx et remplace le par yyyy"
Bon ca n'a pas l'air clair, alors je suis à votre disposition pour repondre aux questions...lol
Merci
Lire la suite 

Commande SED , rempalcer à partir de »

13 réponses
Réponse
+0
moins plus
Salut,

Un exemple plus parlant serait très apprécié...

Est-ce que les 2 chaînes se trouvent sur la même ligne ?
ponpon27 - 10 avril 2008 à 14:54
exemple concret:

mon fichier comporte X lignes syntaxées comme ca:

...
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3
...

jaimerai pouvoir remplacer PASSWORD2 de la ligne contenant titi45 , et seulement celle la...par PASSWORDX
Ajouter un commentaire
Réponse
+0
moins plus
 sed '/titi45/ s/\(.* titi45\).*/\1 PASSWORDX/'
;-))
ponpon27 - 10 avril 2008 à 15:04
merci..ca a l'air simple pourtant..

Pourrais tu me detailler cette commande pour que je ne fasase pas QUE l'appliquer mais que je puisse la reutiliser un jour sans avoir a vous deranger encore...

Merci!!
Ajouter un commentaire
Réponse
+0
moins plus
Bon en fait on peut même se passer du début :
 sed 's/\(.* titi45\).*/\1 PASSWORDX/'

En fait on regroupe dans une sous-expression "\(...\)" tout ce qui trouve avant la chaine "titi45" (elle même comprise dans la sous-expression), puis on demande dans la partie de remplacement de substituer ce que contient la sous-expression par elle même (représentée par "\1" vu que c'est la seule, s'il y avait plusieurs sous-expressions (jusqu'à 9), chacune serait représentée par son rang) suivi par le nouveau mot de passe "PASSWORDX".

Voir SED - The Stream EDitor - Part II - Les sous-expressions
ponpon27 - 10 avril 2008 à 15:29
Limpide..

Et dans le cas ou titi45 serait en fait titi$serie ou serie aurait la valeur 45 ?quelle serait la nouvelle syntaxe a ce moment la? estce $serie serait reconnu comme variable ou pas?
Ajouter un commentaire
Réponse
+0
moins plus
Voir SED - The Stream EDitor - Part II - Le remplacement de variables
ponpon27 - 10 avril 2008 à 15:42
Merci beaucoup à toi..cela fonctionne nickel...
ponpon27 - 11 avril 2008 à 08:48
Arff ..je me suis un peu avancé endisant que cela fonctionnait..

Cela fonctionne en effet , jai bien le remplacement qui s'effectue mais....ce remplacement ne s'effectue pas QUE sur la ligne qui contient la chaine recherchée....mais sur toutes les lignes du fichiers...en fait cela me remplace TOUTES les dernieres chaines de caracteres de mon fichier par PASSWORDX..et pas seulement la chaine de cararactere recherchée...
ponpon27 - 11 avril 2008 à 08:49
Je passe de :
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3

à:
htpasswd titi44 PASSWORDX
htpasswd titi45 PASSWORDX
htpasswd titi46 PASSWORDX
Ajouter un commentaire
Réponse
+0
moins plus
Re-

Poste ta ligne de commande (ou ton script) et le résultat, sans ça on peut pas voir où ça coince ;-\
Ajouter un commentaire
Réponse
+0
moins plus
Pour exemple :
jp@MDK:~/tmpfs ssh$ cat plop
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORD2
htpasswd titi46 PASSWORD3

jp@MDK:~/tmpfs ssh$ serie=45
jp@MDK:~/tmpfs ssh$ echo ${serie}
45

jp@MDK:~/tmpfs ssh$ sed "s/\(.*titi${serie}\).*/\1 PASSWORDX/" plop
htpasswd titi44 PASSWORD1
htpasswd titi45 PASSWORDX
htpasswd titi46 PASSWORD3

jp@MDK:~/tmpfs ssh$
;-))
ponpon27 - 11 avril 2008 à 09:45
je suis un ane!!!
Ca marche effectivement tres bien merci..j'avais appeller ma variable SERIE et dans mon script j'invoquais la variable serie!! en minuscules!!

Merci bcp de ton aide précieuse...
Ajouter un commentaire
Ce document intitulé « Commande SED , rempalcer à partir de... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook