IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[sed] Récupération de sous-chaine


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    Mai 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2009
    Messages : 53
    Par défaut [sed] Récupération de sous-chaine
    Bonjour

    Je cherche a remplacer avec sed un champ mdp dans un xml, mais je n'arrive pas a recuperer la fin de ma ligne

    partie du xml qui m'interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <Resource name="ds/uq0/spirris" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@dasgbdproda1.serv.cdc.fr:22227:dxuq0spi" username="ihmspirris" password="8yV_DRs_8_4q" initialSize="2" maxActive="20" maxIdle="5" maxWait="120000" minIdle="2" validationQuery="select 'validationQuery' from dual" testOnBorrow="true" timeBetweenEvictionRunsMillis="900000" numTestsPerEvictionRun="4" minEvictableIdleTimeMillis="1800000" removeAbandoned="true" removeAbandonedTimeout="600" logAbandoned="true" />
    ma ligne sed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed '/ihmspirris/s#\(.*\)password=".*" \(.*\)#\1password="toto" \2#' fic.xml
    le resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Resource name="ds/uq0/spirris" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@dasgbdproda1.serv.cdc.fr:22227:dxuq0spi" username="ihmspirris" password="toto" />
    Je ne parvient pas a corriger pour recuperer la suite apres le password
    j'ai essayer avec des \" ou " simple pour le password=, mais ca n'a rien changer

    dans un premier temps pourriez vous m'aider la dessus ?

    dans un 2nd temps, mais c'est bonus, est-il possible dans le sed de chercher la ligne qui contient DataSource ET mon user, et faire la modif sur cette ligne, histoire de pas changer une ligne qui contiendrait le user mais qui n'aurait rien a voir avec mon context.

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    la regex .* est gloutonne : elle va jusqu'au dernier guillemet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/ihmspirris/s#\(.*\)password="[^"]*" \(.*\)#\1password="toto" \2#' fic.xml
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    xmllint permet de traiter les fichier xml. C'est plus propre que d'utiliser sed.

    Pour le "ET" dans sed, il suffit de regrouper les commandes. exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '/PremierCritere/{/SecondCritere/s@blablabla@blobloblo@g;};

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    Mai 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2009
    Messages : 53
    Par défaut
    Merci a vous deux, je testerais ca lundi
    xmllint je connais pas du coup (et je sais meme pas si il est installé chez nous)

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    parce que les outils shell traitent des lignes, et que le XML peut être sur plusieurs lignes sans souci pourvu que le balisage soit respecté, si tu dois traiter souvent du XML, c'est vivement recommandé (ou n'importe quel processeur de XSLT).
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    Mai 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2009
    Messages : 53
    Par défaut
    au final n'utilise xmllint (installé par chance) pour trouver la valeur que je veux modifier, puis sed dans le fichier pour changer l'ancien mdp (trouvé avec xmllint) par le nouveau

    pas trouvé comment changer la valeur directement avec xmllint, et en cherchant souvent c'est xmlstarled qui sort, mais lui n'est pas installé, donc pas possible de faire avec.

    Merci pour votre aide

Discussions similaires

  1. SHELL BASH récupération de sous chaine d'un chemin
    Par fabriceMerc dans le forum Linux
    Réponses: 7
    Dernier message: 20/09/2009, 14h56
  2. Sed extraire une sous-chaine lettre de lecteur
    Par eZula dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 05/03/2008, 07h34
  3. Extraction de sous-chaine dans une chaine
    Par ma2th dans le forum C
    Réponses: 7
    Dernier message: 07/05/2004, 12h42
  4. Réponses: 10
    Dernier message: 24/02/2004, 12h28
  5. [sous-chaine] Avec strpos ou substring ??
    Par terziann dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 17/07/2003, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo