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 :

Extraire un nombre contenu dans le nom d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut Extraire un nombre contenu dans le nom d'un fichier
    Bonjour,
    Je cherche a extraire un nombre contenu dans le nom d'un fichier.
    Le nombre peut être au début ou au milieu du nom du fichier mais jamais a la fin.
    J'ai essayé comme ça pour enlever la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="argh12truc";echo "${file%%[0-9]*}"
    argh
    j'obtiens le début sans les chiffres que je voudrais conserver.
    J'ai essayé de lui dire de me laisser les chiffres de cette manière sans résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file="argh12truc";echo "${file%%[^0-9]*}"
    Là, plus rien ne s'affiche.
    Soit ce n'est pas possible d'utiliser la négation (^) dans ce type de construction soit je ne sais pas faire.
    Si quelqu'un a une idée ?

    J'arrive tout de même a extraire le nombre de cette manière mais c'est plus lourd.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="argh12truc";fin="${file#${file%%[0-9]*}}";echo "${fin%${file##*[0-9]}}"
    12
    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    Bonjour,

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ file="argh12truc"
    $ rgx='[[:alpha:]]*([0-9]*)[[:alpha:]]+'
    $ [[ $file =~ $rgx ]] && echo ${BASH_REMATCH[1]}
    12
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    OK, merci, ça fonctionne.
    Je n'avais pas précisé que le nombre pouvait ne pas être accolé aux lettres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="argh 23 truc";rgx='[^[:digit:]]*([0-9]*)[^[:digit:]]+';[[ $file =~ $rgx ]] && echo ${BASH_REMATCH[1]}
    23
    Je vais étudié ça.
    Cordialement.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Une façon de faire plus proche de ta 1ère tentative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ file="argh 12 truc";echo "${file//[[:alpha:][:space:]]}"
    12

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour et merci.
    ça fonctionne aussi et en plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="argh-12-truc";echo "${file//[^0-9]}"
    12
    Je devrais poser des questions plus souvent au lieu de lire les pages de man pendant des heures !!!
    Cordialement.

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

Discussions similaires

  1. Filtre sur nombre contenu dans un String
    Par vinch999 dans le forum SQL
    Réponses: 10
    Dernier message: 20/06/2012, 15h52
  2. Caracteres speciaux dans les noms de dossiers/fichiers
    Par Delphy113 dans le forum Administration système
    Réponses: 1
    Dernier message: 27/02/2007, 18h50
  3. Extraire les images contenues dans un fichier word
    Par elreybubu dans le forum Delphi
    Réponses: 2
    Dernier message: 25/10/2006, 13h07
  4. [bat]espace dans le nom d'un fichier
    Par norac dans le forum Windows
    Réponses: 8
    Dernier message: 29/06/2006, 10h15
  5. Comment savoir le signe du nombre contenu dans ax ?
    Par falcon007de dans le forum Assembleur
    Réponses: 3
    Dernier message: 26/03/2004, 11h48

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