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

Linux Discussion :

extraction chaine caractere


Sujet :

Linux

  1. #1
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut extraction chaine caractere
    Bonjour,

    Je cherche a extraire des chaines de caracteres

    dans fichier " mysqld.err-14072010" je récupere la chaine "Got error"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     grep -i  "Got error" mysqld.err-14072010 | awk '{ print $10}'
    ce qui me renvoie :

    comment puis-je extraire sport et championnat svp ?

    Je bloque, merci beaucoup

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Vous pouvez peut être chercher du côté de la fonction split de awk.
    Quelque chose du genre split($10,tab,"/")

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par omelhor Voir le message
    Bonjour,

    Je cherche a extraire des chaines de caracteres

    dans fichier " mysqld.err-14072010" je récupere la chaine "Got error"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     grep -i  "Got error" mysqld.err-14072010 | awk '{ print $10}'
    ce qui me renvoie :

    comment puis-je extraire sport et championnat svp ?

    Je bloque, merci beaucoup
    Salut

    Est-ce que le chemin trouvé s'arrête toujours à une profondeur de 2 ou bien il peut y avoir une arborescence plus longue (style ./sport/championnat/2009/handball/France) ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    humm tu peux te servir de la commande dirname.
    Y a un equivalent pour le nom du fichier mais j ai oublié le nom exact.
    sinon l'idée du split basé sur le charactere \ est une bonne idée

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par XartH Voir le message
    humm tu peux te servir de la commande dirname.
    Y a un equivalent pour le nom du fichier mais j ai oublié le nom exact.
    basename

    Citation Envoyé par XartH Voir le message
    sinon l'idée du split basé sur le charactere \ est une bonne idée
    Attention, on n'est pas sous zondiw. Il s'agit du caractère / !!!
    Malheureusement il n'y a pas de split en shell. On peut toutefois programmer un ersatz de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chemin=$(grep -i  "Got error" mysqld.err-14072010 | awk '{ print $10}')
    old="$IFS"; IFS=/; set $chemin; IFS="$old"
    echo $1 $2 $3 ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    rooo la boulette

    Enfin bref si tu veux te simplifier la tache pour le split, tu peux utiliser perl.
    perl possede une fonction de split simple d utilisation et tres pratique.

    Sinon comme la dis Sve@r , si tu tiens absolument a rester dans du bash/shell tu dois redefinir la variablel IFS.

    Pour info IFS, est la variable representant le seperateur.



    basename recupere le nom du fichier mais pas l extension de celui.
    echo `basename file.txt `
    >file

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 440
    Points
    19 440
    Par défaut
    Citation Envoyé par XartH
    basename recupere le nom du fichier mais pas l extension de celui.
    echo `basename file.txt `
    >file
    Il faudrait tester les commandes que tu donnes !
    et aussi les copier avec leur résultat entre balises CODE (bouton #)

    - echo n'est pas indispensable
    - il est effectivement possible de ne pas récupérer l'extension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    basename ./chemin/fichier.txt .txt
    fichier
    mais il faut la connaître au préalable.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par XartH Voir le message
    rooo la boulette
    Pas grave. Il y en aura d'autres. Et justement...

    Citation Envoyé par XartH Voir le message
    basename recupere le nom du fichier mais pas l extension de celui.
    echo `basename file.txt `
    >file
    Hé si !!! (au passage, faire echo `une commande qui affiche un truc` c'est pas tiptop optimisé... autant appeler directement la commande qui affichera le truc aussi bien que le echo...)
    basename /tmp/file.txt
    >file.txt

    Si on veut enlever l'extension, il faut le préciser
    basename /tmp/file.txt .txt
    >file

    Citation Envoyé par XartH Voir le message
    Enfin bref si tu veux te simplifier la tache pour le split, tu peux utiliser perl.
    perl possede une fonction de split simple d utilisation et tres pratique.
    Ok pour la pub. Tu peux aussi utiliser Python

    Citation Envoyé par XartH Voir le message
    Sinon comme la dis Sve@r , si tu tiens absolument a rester dans du bash/shell tu dois redefinir la variablel IFS.
    Il y a aussi d'autres moyens. Comme l'utilisation de la commande cut par exemple...

    Citation Envoyé par XartH Voir le message
    Pour info IFS, est la variable representant le seperateur.
    Exact. Il s'agit du séparateur de champs interne. C'est la variable qui permet au shell de distinguer un élément d'un autre. C'est pour ça que je prends la précaution, si je dois le changer pour un besoin ponctuel, de le restaurer immédiatement après l'avoir utilisé....
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    En fait le code du echo etait pour le cas ou on était dans un script shell.
    Bon apres je dois etre honnete j etais sous win... quand j ai posté mais j avais pas de linux sous la main.

    Promis la prochaine je verifie avant de poster.

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par XartH Voir le message
    En fait le code du echo etait pour le cas ou on était dans un script shell.
    C'est pareil. Que tu sois dans un script ou en direct, faire pwd affichera la même chose que echo `pwd`. Mais dans le premier, il n'y aura pas de sous-processus.

    Il peut arriver qu'on fasse echo `commande` dans le cas où on veut faire un effet d'affichage particulier. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "On est le `date`"
    Citation Envoyé par XartH Voir le message
    Bon apres je dois etre honnete j etais sous win... quand j ai posté mais j avais pas de linux sous la main.
    virtualbox !!! Super pratique pour tester un truc rapidement sans rebooter
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. extraction chaine caractere
    Par omelhor dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2011, 07h22
  2. [RegEx] extraction chaine caractere
    Par omelhor dans le forum Langage
    Réponses: 4
    Dernier message: 18/09/2009, 13h35
  3. extraction nombre from chaine caractere
    Par Matmal11 dans le forum Modules
    Réponses: 4
    Dernier message: 22/01/2007, 13h59
  4. [RegEx] Extraction chaine de caractere
    Par dafalri dans le forum Langage
    Réponses: 6
    Dernier message: 17/03/2006, 16h05
  5. [String] Extraction chaine de caractères
    Par beZor dans le forum Langage
    Réponses: 9
    Dernier message: 27/02/2006, 14h46

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