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 :

Récupérer un morceau de chaine.


Sujet :

Linux

  1. #1
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut Récupérer un morceau de chaine.
    Salut,

    J'aimerais récupérer un morceau du chemin d'accès d'une série de fichiers, ces derniers se présentent sous la forme suivante :

    /var/mon/repertoire/00/11/22/99-fichier
    /var/00/12/34/98-fichier
    /var/mon/repertoire/de/fichiers/11/22/33/97-fichier

    Mon but serait de récupérer

    00/11/22
    00/12/34
    11/22/33

    Je pensais y être arrivé grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo /var/mon/repertoire/de/fichiers/11/22/33/97-fichier |egrep -o "*[0-9]+/+*[0-9]+/+*[0-9]+/"
    Mais mon expression régulière doit être mal choisie car si le chemin ressemble à ceci :
    12/56/blabla/plop/34/79/90/fichier
    La commande ressort
    12/56 34/79/90
    Quelqu'un voit comment éliminer le groupe de chiffre parasite?

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo /var/mon/repertoire/de/fichiers/11/22/33/97-fichier |egrep -o "/[0-9]{2}/[0-9]{2}/[0-9]{2}/"
    c'est un peu bête et méchant...
    Il ne faut pas confondre wildcard et expression régulière.
    * ne veut pas dire "quoi que ce soit d'une longueur quelconque"
    * est un quantifieur.
    Ta regexp commence par un quantifieur avec rien à quantifier

  3. #3
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    C'est clair que j'ai fait ça salement... Pour me rattrapper, voici une version plus clean (avec peut être une vraie expression régulière? Quelle est la différence avec la wildcards?):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo 12/56/blabla/plop/34/79/90/fichier/97-fichier |egrep -o "([0-9]{2}/){3}"

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    joliment factorisé

    Tu peux voir que les wildcards sont relativement peu puissantes comparées aux expressions régulières.

    On retrouve des expressions régulières en c, java, php, .net ... tout ce qu'on veut. ça permet vraiment un très bon contrôle des chaînes de caractère.

  5. #5
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Merci pour toutes ces info.

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

Discussions similaires

  1. Récupérer un morceau de chaine
    Par gege765 dans le forum Langage
    Réponses: 6
    Dernier message: 15/12/2011, 18h27
  2. Récupérer un morceau d'une chaîne de caractère
    Par Sekigawa dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2008, 14h15
  3. [RegEx] Récupérer une portion de chaine délimitée par une autre chaine
    Par AnkyFive dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 08h24
  4. Réponses: 27
    Dernier message: 28/03/2007, 16h09
  5. Récupérer un morceau de chaine
    Par snoop dans le forum Linux
    Réponses: 10
    Dernier message: 26/08/2004, 10h09

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