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 :

Extraire valeur d'un stream (regexp ?)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Par défaut Extraire valeur d'un stream (regexp ?)
    Bonjour,
    je continue dans mes question de débutants

    Lorsque j'appelle une url dans mon script (via curl) elle me renvoit un message xml.
    Dans ce xml, j'aimerais récup une infos, plus précisement la valeur entre <id>toto</id> pour que je puisse l'utiliser dans la suite de mon script

    J'ai cherché un peu, je suis tombé sur sed mais je trouve ça très complexe au premier abord (et j'ai pas trop de souci avec les regexp en général).

    Donc si vous avez la solution ou que vous pouvez me guider...

    Merci

  2. #2
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    J'ai une réponse de noob, mais il y a sûrement plus propre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n 's/.*<id>\(\w*\)<\/id>.*/\1/p'
    -n
    > pour ne pas afficher les lignes

    s/.../.../ (s/.*<id>\(\w*\)<\/id>.*/\1/p)
    > chercher le pattern compris entre les 2 premiers slashs et le remplace par le contenu entre les 2 derniers slashs

    .*<id>\(\w*\)<\/id>.*
    > texte chercher : quelque chose ou pas, suivi de <id>, puis d'un mot (\w est à adapter) (les parenthèses échappées sont uniquement là pour mémoriser cette partie) puis suivi de </id> et d'éventuellement quelque chose

    \1
    > fait référence au premier groupe de parenthèses du pâté (.*<id>\(\w*\)<\/id>.*)précédent

    p
    > affiche la ligne correspondante

    Donc la commande cherche une ligne correspondant à quelque chose ou pas, suivi de <id>, puis d'un mot puis terminé par </id> et éventuellement autre chose. Elle remplace cette ligne par ce qui est entre <id> et </id> et affiche le résultat...

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Par défaut
    Réponse très rapide, merci bien

  4. #4
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    de rien ^^ tu peux cliquer sur résolu si c'est ok, à moins que tu ne préfères attendre une réponse plus jolie (ce qui devrait être possible )

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par Alek-C Voir le message
    à moins que tu ne préfères attendre une réponse plus jolie (ce qui devrait être possible )
    Salut,

    Plus jolie peut être pas mais j'ai plus coutume de faire comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n 's/.*<id>\(\[^<]*\)<.*/\1/p'

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Par défaut
    Je continue avec le sed
    Là je cherche à obtenir le nom du rep du fichier (donc 56) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dirname ftp/56/toto.zip | sed -n 's/*\/\(\w\)$/\1/p'
    (n'importe quoi * suivi de slash \/ suivi d'un mot \(w\) suivi de la fin de ligne - pour que si jamais dirname me renvoi alphonse/ftp/56 je n'ai pas ftp/56 dans \1)

    Et cela ne me renvoi rien donc pas pratique pour trouver l'erreur

    Une idée ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net] Extraire valeur max d'un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/03/2011, 17h37
  2. Manipuler tableaux pour extraire valeur
    Par Lafab dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2008, 16h40
  3. [Tableaux] Extraire valeur d'une chaine de caractere
    Par Shandler dans le forum Langage
    Réponses: 10
    Dernier message: 20/03/2008, 10h57
  4. Réponses: 2
    Dernier message: 02/10/2007, 11h42
  5. Extraire valeur de colonne
    Par Nounours1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/07/2007, 21h38

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