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 :

enlever les caracteres alphabetiques d'une expression


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut enlever les caracteres alphabetiques d'une expression
    Bonjour.

    j'ai une expression contenant des lettres et des numéros :

    MyExpression="2008Y03M12D"

    Comment enlever les lettres pour n'avoir que "20080312" ??

    Merci

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    utilises sed


    par exemple :
    echo 444t4i44 | sed -e "s/[a-z]\{1\}//"
    remplace la première suite de 1 lettre par rien
    ce qui donne
    4444i44
    ....^remplacement de t par "rien"

    s= substitute prend le paramètre g pour le faire de façon globale et pas que sur la première occurrence.

    de plus tu peux isoler un bout de chaine par \(.......\)




    Maintenant à toi de jouer pour trouver comment le faire
    (avant d'aller voir la solution plus bas dans le message)....

    pour t'habituer aux regexps :
    http://www.shellunix.com/regexp.html

    des exemples plus concrets :
    http://sed.sourceforge.net/sed1line_fr.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    obelix(root/root)[PREC]/root>echo "2008Y03M12D" | sed "s/\([A-Za-z]\)//g"      
    20080312
    obelix(root/root)[PREC]/root>

  3. #3
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par frp31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    obelix(root/root)[PREC]/root>echo "2008Y03M12D" | sed "s/\([A-Za-z]\)//g"      
    20080312
    obelix(root/root)[PREC]/root>
    Jolie reponse, moi je propose ca mais c'est la meme chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [lanfeust@waha ~]$  echo "2008Y03M12D" | sed -e 's/[^0-9]//g'
    20080312
    [lanfeust@waha ~]$
    Tout ce qui n'est pas un chiffre je les remplace par rien.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    oui j'ai décomposé juste pour etre "clair"

    avec GNU sed la syntaxe simplifiée marche dans ce cas précis.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    bon merci pour les reponses et pour les liens surtout...


    j'ai trouvé une maniére encore plus simple de faire, en utilisant tr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo "2008Y03M12D" | tr -d 'a-zA-Z'

    et le tour est joué..

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

Discussions similaires

  1. enlever les espaces blancs d une chaines de caracteres
    Par Mobistar dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 04/08/2008, 19h26
  2. Réponses: 5
    Dernier message: 26/10/2006, 15h59
  3. Réponses: 3
    Dernier message: 20/10/2006, 12h40
  4. Regexp : impossible d'enlever un caractere de fin à une chaine
    Par dukesgf dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 18/08/2006, 16h19
  5. [RegEx] Problème pour enlever les tags javascript d'une source HTML
    Par Easyweb dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2006, 02h10

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