Sed et les occurences

Résolu/Fermé
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 - 26 déc. 2010 à 23:45
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 27 déc. 2010 à 01:11
Bonjour,


J'ai un fichier. Dans ce fichier, j'ai plusieurs champs :

<password>motdepasse1</password>
<password>motdepasse2</password>
<password>motdepasse3</password>
...

J'ai une commande trouvé sur le net et adapté à mes besoins :
sed -n 's,.*<password>\(.*\)</password>,\1,p' fichier

Cette commande me sort :
motdepasse1
motdepasse2
motdepasse3

Normal. Mais je souhaite par contre (et c'est maintenant que je fais appel à vous ;) ) ne récupérer, par exemple, que "motdepasse2". Je sais par contre que ce mot de passe est placé en second dans le fichier..

Pouvez-vous m'aider ?


Merci d'avance.


Cordialement,

Seb.



8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
26 déc. 2010 à 23:56
Salut,

 sed -n '2 s,.*<password>\(.*\)</password>,\1,p' fichier
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
27 déc. 2010 à 00:00
Bonsoir,

Malheureusement, cette commande ne renvoie rien chez moi ...


seb@serveur:~$ sed -n '2 s,.*<password>\(.*\)</password>,\1,p' serveurTM/GameData/Config/dedicated_cfg.txt
seb@serveur:~$



0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 déc. 2010 à 00:01
Re,

Alors fait voir ton fichier ou mets le sur cjoint
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
27 déc. 2010 à 00:07
Bonsoir,


Voici le fichier original (traité par la suite par un script pour le remplacement de certaines données)

https://www.cjoint.com/?0mBaePeCOKF


Merci.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
Modifié par lami20j le 27/12/2010 à 00:31
D'après ce que j'ai compris tu veux obtenir A_PASSWORD ?
Donc le 2ème?
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
27 déc. 2010 à 00:41
Sur le principe oui.

En réalité, à un moment où a un autre, je vais avoir besoin de récupérer autre chose que celui-là. Pour le moment, celui qui m'intéresse le plus c'est "MON_PASSWORD". Mais je vais aussi avoir besoin de récupérer "SA_PASSWORD" ainsi que mettre un mot de passe dans le champ :
<password></password>
qui est vide. Sachant que la place de ces champs ne bougent pas (le mot de passe SA est toujours le premier, le Admin est toujours le 2nd ....) et que je ne connais pas ce qui se trouve entre ces balises "password".

Je ne sais pas si tu as compris ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
Modifié par lami20j le 27/12/2010 à 00:52
Re,

Par exemple pour récupération
:~$ sed -n '/>Admin/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt   
A_PASSWORD  
r:~$ sed -n '/SuperAdmin/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt   
SA_PASSWORD  
r:~$ sed -n '/User/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt   
U_PASSWORD
:~$ sed -n '/MON_LOGIN/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt 
MON_PASSWORD


GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 déc. 2010 à 00:56
Re,

Et pour mettre un mot de passe ici (si j'ai bien compris)
		<max_players>PLAYERS</max_players>
		<password></password>
tu peux faire par exemple


sed -i.orig '/PLAYERS/{n;s/\(.*>\)\(.*\)\(<.*\)/\1NEWPASS\3/}' dedicated_cfg.txt
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
Modifié par gaston77 le 27/12/2010 à 01:05
Et en plus tu répond à ma question avant que je n'ai pu m'y pencher.

Un très grand merci !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 déc. 2010 à 01:06
Ben, chez moi ça marche. Voici le test
~$ sed -n '/PLAYERS/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt 

~$ sed -i.orig '/PLAYERS/{n;s/\(.*>\)\(.*\)\(<.*\)/\1NEWPASS\3/}' dedicated_cfg.txt 
~$ sed -n '/PLAYERS/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt 
NEWPASS
~$ sed -n '/PLAYERS/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt.orig 

~$ 
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
Modifié par gaston77 le 27/12/2010 à 01:12
Oui effectivement, mais c'est juste que moi, je ne teste pas avec l'original et j'ai une autre valeur à la place de PLAYERS. Mais j'ai changé et ça marche en fait.

Je ne pensais pas que tu allais le lire entre le moment où je l'ai écris et modifier.

Mais ça marche, c'est le principal.

Merci.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 déc. 2010 à 01:11
De rien ;-)
Bonne continuation.
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
Modifié par gaston77 le 27/12/2010 à 01:01
C'est exactement ce qu'il me fallait.

Cependant, j'ai un petite question (je ne comprend pas la totalité de la ligne de commande mais je pense avoir compris le principe qui est de rechercher un mot "MON_LOGIN" par exeple et de chercher ce qu'il y a en dessous ?) :

Tu as mis :

sed -n '/>Admin/{n;s/.*>\(.*\)<.*/\1/;p;}' dedicated_cfg.txt

Alors que dans les autres commandes, le chevron n'est pas présent. Pourquoi ? Faute de frappe ?


En tout cas, merci beaucoup !


Occupez vous de mes amis. Pour ce qui est de mes ennemis, je m'en charge.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
Modifié par lami20j le 27/12/2010 à 01:10
Re,

Le chevron je l'ai utilisé puisque si j'aurais mis juste Admin c'est toujours SuperAdmin qui aurait été reconnu. Comme ça j'oblige la regex de reconnaître le motif >Admin
0
gaston77 Messages postés 489 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 10 avril 2011 34
Modifié par gaston77 le 27/12/2010 à 01:07
Ahhhhhhhhhhhh bah oui effectivement.


Encore merci ;)

Occupez vous de mes amis. Pour ce qui est de mes ennemis, je m'en charge.
0