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 :

Dernières occurences d'une chaîne


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 258
    Points : 77
    Points
    77
    Par défaut Dernières occurences d'une chaîne
    Bonjour,

    J'aimerais récupérer les dernières occurences d'une chaîne.
    Ce sont des #.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STRING="rgfjsdfgjh##kjkshdfjhsjdkf#ksjhdfjkhdshjfsdf#jshdfjkdsfjhdsfjhsdfhgsdfghtyrerzaef##"
    J'aimerai qu'il compte les # uniquement de la fin, donc ici il faudrait que ça doit 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STRING="rgfjsdfgjh##kjkshdfjhsjdkf#ksjhdfjkhdshjfsdf#jshdfjkdsfjhdsfjhsdfhgsdfghsdfghsfdjgh#####"
    J'aimerais récupérer la valeur 5.

    Comment faire ?
    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 276
    Points : 13 553
    Points
    13 553
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ STRING="rgfjsdfgjh##kjkshdfjhsjdkf#ksjhdfjkhdshjfsdf#jshdfjkdsfjhdsfjhsdfhgsdfghsdfghsfdjgh#####"; nb=0;string=$STRING;while [[ "$string" =~ \#$ ]]; do string=${string%#};nb=$((nb+1));done; echo $nb
    5

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 258
    Points : 77
    Points
    77
    Par défaut
    C'est parfait merci

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut avec sed et awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '123#45 dbhx#####' |sed 's/.*[^#]\(#*$\)/\1/' | awk '{print length}'
    5

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 480
    Points
    19 480
    Par défaut
    awk sait aussi faire ce que fait sed (pas de la même manière, bien sûr), ce dernier n'est donc pas utile.

  6. #6
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '123#45 dbhx#####' | awk 'BEGIN{ FS = "[^#]*" } {print length($NF) }'
    5

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 830
    Points
    12 830
    Par défaut
    Bonjour, pour le fun en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ STRING="rgfjsdfgjh##kjkshdfjhsjdkf#ksjhdfjkhdshjfsdf#jshdfjkdsfjhdsfjhsdfhgsdfghsdfghsfdjgh#####"
    $ X=${STRING/*[^#]/}
    $ echo ${#X}
    5

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

Discussions similaires

  1. Compter les occurences dans une chaîne
    Par AuBozon dans le forum Débuter
    Réponses: 3
    Dernier message: 27/04/2008, 12h17
  2. Réponses: 32
    Dernier message: 08/03/2008, 04h07
  3. [RegEx] Regex : récupérer toutes les occurences dans une chaîne
    Par Poulpynette dans le forum Langage
    Réponses: 1
    Dernier message: 10/10/2006, 11h14
  4. [FAQ] compter les occurences d'une chaîne dans un fichier
    Par cafeine dans le forum Contribuez
    Réponses: 3
    Dernier message: 25/07/2006, 12h21
  5. Nombre d'occurences dans une chaîne de caractères
    Par Olivier14 dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 20h11

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