Remplacer une expression avec sed selon 2 critères

Remplacer une expression avec sed selon 2 critères - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-04-2014 à 15:44:13    

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
 

Reply

Marsh Posté le 28-04-2014 à 15:44:13   

Reply

Marsh Posté le 28-04-2014 à 16:42:48    

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
Reply

Marsh Posté le 28-04-2014 à 17:11:44    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed