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 :

Extraire n caractères d'une ligne après un pattern spécifique


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Par défaut Extraire n caractères d'une ligne après un pattern spécifique
    Bonjour,

    j'ai une ligne du type:

    TOTO:17 TITI:21 TATA:19...etc.

    Chaque groupe "TOTO:...", "TITI:..."...etc a la même taille (ici 8 caractères).

    Je cherche à extraire la valeur correspondant à la clé "TITI:", c'est à dire l'ensemble des caractères entre les ":" sui suivent "TITI" et la clé suivante ("TATA"), soit 21.

    J'ai essayé avec sed de récupérer les 2 caractères qui suivent "TITI:", sans succès:

    echo 'TOTO:17 TITI:21 TATA:19' | sed 's/.*TITI:\([0-9]{2}*\).*/\1/g'

    Auriez-vous une idée?

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 46
    Par défaut
    Bjr,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo 'TOTO:17 TITI:21 TATA:19' | sed 's/.*TITI:\(.*\) .*$/\1/'
    Ou pour ne récupérer que 2 caractères:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo 'TOTO:17 TITI:21 TATA:19' | sed 's/.*TITI:\(..\).*$/\1/'
    Sinon, ton code fonctionne (presque )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'TOTO:17 TITI:21 TATA:19' | sed 's/.*TITI:\([0-9]\{2\}\).*/\1/g'
    Ou pour ne pas s'emm... avec les antislashs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'TOTO:17 TITI:21 TATA:19' | sed -r 's/.*TITI:([0-9]{2}).*/\1/'

  3. #3
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut pour la forme, pure bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    L='TOTO:17 TITI:21 TATA:19'
    M=( ${L##*TITI:} )
    echo ${M[0]}

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2013, 20h00
  2. [debutant C++] Extraire un caractère d'une chaîne
    Par Ministar dans le forum Débuter
    Réponses: 12
    Dernier message: 23/10/2006, 18h25
  3. taille max de nb de caractère dans une ligne de table mysql
    Par zidenne dans le forum Administration
    Réponses: 1
    Dernier message: 01/09/2006, 11h04
  4. Sauter une ligne après un JLabel
    Par DefmY dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/05/2006, 10h09
  5. Comment extraire des caractères d'une chaine ?
    Par Powa87 dans le forum Langage
    Réponses: 16
    Dernier message: 01/01/2005, 19h00

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