Commande SED , rempalcer à partir de...
Résolu
ponpon27
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
ponpon27 Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
ponpon27 Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Commande SED , rempalcer à partir de...
- Invite de commande - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Commande terminal mac - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Supprimer historique commande amazon - Forum Consommation & Internet
6 réponses
Salut,
Un exemple plus parlant serait très apprécié...
Est-ce que les 2 chaînes se trouvent sur la même ligne ?
Un exemple plus parlant serait très apprécié...
Est-ce que les 2 chaînes se trouvent sur la même ligne ?
Bon en fait on peut même se passer du début :
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
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
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re-
Poste ta ligne de commande (ou ton script) et le résultat, sans ça on peut pas voir où ça coince ;-\
Poste ta ligne de commande (ou ton script) et le résultat, sans ça on peut pas voir où ça coince ;-\
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$;-))
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