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 :

Extraction sous-chaine BASH


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Par défaut Extraction sous-chaine BASH
    Bonjour,

    Dans un script Bash j'ai du mal à extraire une soush-chaine.

    J'ai pas exemple ce nom de fichier: n022.car

    Et je dois en extraire le nombre 022

    Sachant que le nombre peut comporter plus de 3 chiffres.

    J'ai essayé plusieurs manières mais je n'arrive pas à trouver une solution générique pour prendre le nmobre entre le 'n' et le '.'.

    Pouvez m'y aider ?

    Merci beaucoup

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var="n022.car"
    sed 's/^\w\([0-9]*\).*/\1/' <<<"$var"
    022
    echo ${var//[[:alpha:].]/}
    022
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Par défaut
    Salut touronster,
    plusieurs possibilités existent pour arriver au résultat voulu, N_BaH a déjà donné un aperçu des possibilités.
    Ci-dessous, le même résultat avec la commande cut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var="n022.car"
    echo $var | cut -c2- | cut -d. -f1
    022
    A toi de choisir ta recette, bye.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Bonjour,

    je n'ai pas voulu créer de nouveau sujet car mon problème est similaire.
    J'ai un pourcentage, par exemple 1% ou 50%.

    Comment ne récupérer que le premier - ou les deux premiers quand il y en a deux - chiffres (sachant que je ne sais pas d'avance s'il y en a un ou deux) ?

    Merci d'avance.

  5. #5
    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,

    Citation Envoyé par Alwaysin Voir le message
    Bonjour,

    je n'ai pas voulu créer de nouveau sujet car mon problème est similaire.
    J'ai un pourcentage, par exemple 1% ou 50%.

    Comment ne récupérer que le premier - ou les deux premiers quand il y en a deux - chiffres (sachant que je ne sais pas d'avance s'il y en a un ou deux) ?

    Merci d'avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ A="150%"
    
    $ echo ${A/\%/}
    150
    
    $ A="1%"
    
    $ echo ${A/\%/}
    1

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Merci pour la réponse !
    Cela semble bon mais ça ne marche pas pour moi :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=$(df | awk 'NR==5 {print $5}')
    echo $A
    1%
    
    echo ${A/\%/}
    /mnt/dir/file.sh: ${A/...}: Bad substitution

Discussions similaires

  1. [SH] Extraction sous-chaine (encore ;-) )
    Par alx13 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 28/09/2011, 21h46
  2. extraction sous chaines -> Excel
    Par rienDeComplique dans le forum VBA Word
    Réponses: 6
    Dernier message: 03/09/2009, 17h50
  3. Extraction sous chaine regexp
    Par photorelief dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2009, 20h07
  4. extraction sous chaine
    Par ouinih dans le forum Langage
    Réponses: 6
    Dernier message: 28/01/2009, 11h49

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