|
|
|
|
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
Configuration: Linux Mozilla 1.7.2
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 JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |
Voir SED - The Stream EDitor - Part II - Le remplacement de variables
|
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$;-))
JP - Éleveur de pingouins - Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. |