Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1840 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Remplacer une expression avec sed selon 2 critères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Remplacer une expression avec sed selon 2 critères

n°1357410
cratos
Posté le 28-04-2014 à 15:44:13  profilanswer
 

Bonjour,
 
Je voudrais remplacer la ligne suivante :
 

Code :
  1. <user password="tomcat" roles="tomcat, manager-gui, admin-gui, manager-script" username="tomcat"/>


 
par ceci :
 

Code :
  1. <user password="dsdfnsdfjfoPi5DO" roles="tomcat, manager-gui, admin-gui, manager-script" username="tomcat"/>


 
où dsdfnsdfjfoPi5DO est généré par un générateur de mot de passe aléatoire.
 
J'ai donc écrit ceci (avec $mdp1 étant le résultat de mon générateur) :
 

Code :
  1. sed -i '/<user/s/password="\([a-z]\+\)"\([ -~]\+\)username="tomcat"/password="'"$mdp1"'"/g'


 
Le problème que j'ai c'est que j'aimerais juste remplacer le mot de passe (en vert) et pas l'ensemble de ce qu'il y a avant le / de délimitation, car cette partie peut justement être différente d'un fichier à un autre. Cela étant je veux tout de même que ce critère soit validé, car je ne veux pas appliquer ce remplacement sur une ligne qui contiendrait un autre username.
 
Une idée sur comment je dois procéder ?
 
Merci
 

mood
Publicité
Posté le 28-04-2014 à 15:44:13  profilanswer
 

n°1357413
zipe31
Posté le 28-04-2014 à 16:42:48  profilanswer
 

Salut,
 
$ cat plop

Code :
  1. <user password="toto" roles="tomcat, manager-gui, admin-gui, manager-script" username="toto"/>
  2. <user password="titi" roles="tomcat, manager-gui, admin-gui, manager-script" username="titi"/>
  3. <user password="tomcat" roles="tomcat, manager-gui, admin-gui, manager-script" username="tomcat"/>
  4. <user password="tutu" roles="tomcat, manager-gui, admin-gui, manager-script" username="tutu"/>


 

Code :
  1. $ mdp1="dsdfnsdfjfoPi5DO"


 

Code :
  1. $ sed '/username="tomcat"/{s/"[^"]*/"'"${mdp1}"'/}' plop
  2. <user password="toto" roles="tomcat, manager-gui, admin-gui, manager-script" username="toto"/>
  3. <user password="titi" roles="tomcat, manager-gui, admin-gui, manager-script" username="titi"/>
  4. <user password="dsdfnsdfjfoPi5DO" roles="tomcat, manager-gui, admin-gui, manager-script" username="tomcat"/>
  5. <user password="tutu" roles="tomcat, manager-gui, admin-gui, manager-script" username="tutu"/>


---------------
$ man woman
n°1357415
cratos
Posté le 28-04-2014 à 17:11:44  profilanswer
 

Arf oui bien sûr, sed '/username="tomcat"/ moi qui m'acharnait avec mon sed '/<user/ ...
 
Merci beaucoup !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Remplacer une expression avec sed selon 2 critères

 

Sujets relatifs
Remplacer plusieurs lignes par un seul ";" dans un fichierRemplacer ArchLinux
[Résolu] Sed: extraire une chaîne avec un préfixe optionelRemplacer ALSA + Pulseaudio par OSS + Pulseaudio ?
sed et expression reguliereremplacer une ligne commencant par une chaine
Conseil sur une expression régulièreAfficher contenu lignes de fichiers avec critères
remplacer dans un fichier texte 
Plus de sujets relatifs à : Remplacer une expression avec sed selon 2 critères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR