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 :

Awk et expression régulière


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Awk et expression régulière
    Bonjour

    Je n'arrive pas à faire fonctionner la commande awk avec une expression régulière sur CentOS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $1 | awk '/[A-Z0-9]{4}$/ {print $1}' | wc -l | awk '{print $1}'
    L'objectif est de tester la saisi alphanumérique sur 4 positions.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ton message est assez obscure. Si tu veux de l'aide, tu dois fournir un exemple de chaîne en entrée, ce que tu souhaites obtenir au final avec cette chaîne, et une explication compréhensible de ce que tu veux faire.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    je ne vois pas l'intérêt de wc... :/
    il faut expliciter ce que tu veux en faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/[[:alnum:]]{4}$/{print $1}'
    voir man 7 regex
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    [Back]
    Le but est de tester $1 sur 4 positions en alphanumérique. Sur CentOS, ka commande Awk ne fonctionne pas avec l'expression régulière. Si je positionne $1 à AM00 alors print ne me te renvoit rien (vide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $1 | awk '/[A-Z0-9]{4}$/ {print $1}'

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    et quand tu fais que echo $1 ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Peux-tu nous envoyer le résultat de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "AM00" | awk '/[A-Z0-9]{4}$/ {print $1}'
    Juste pour voir...

  7. #7
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    J'ai fait les 2 tests mais la commande ne renvoi rien :

    1. test avec echo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    > $ echo $m_VAR
    AM00
    > echo $m_VAR | awk '/[A-Z0-9]{4}$/ {echo $m_VAR}'
    >$
    2. test avec print $1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >$ echo "AM00" | awk '/[A-Z0-9]{4}$/ {print $1}'
    >$

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ah ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "AM00" | awk '/[A-Z0-9]{4}$/ {print $1}'
    AM00
    et, $m_VAR n'est pas une variable connue de awk, il faudrait la lui "transférer" avec l'option --assign, ou -v.

    quelle version de awk est installée sur ton système ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readlink -f $(which -a awk)
    et
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonjour,

    Sous gnu awk, les expressions d'intervalle ne sont disponibles qu'en mode POSIX (--posix).

    Sinon, la regex est aussi fonctionnelle pour AM001 par exemple, mais c'est peut-être voulu.
    Cordialement.

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Sous gnu awk, les expressions d'intervalle ne sont disponibles qu'en mode POSIX (--posix).
    Bien vu.
    Avant la version 4 (disponible à partir de centOS 7), gawk est en mode compatibilité par défaut, il faut donc lui ajouter le switch --posix pour passer en mode POSIX et pouvoir utiliser les quantificateurs {m}, {m,} et {m,n}, ou bien le switch --re-interval (qui a l'avantage de ne pas désactiver les extensions GNU).
    Par contre à partir de la version 4, --re-interval est activé par défaut, ces quantificateurs sont alors directement disponibles.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  11. #11
    Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bravo
    Merci pour votre support

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

Discussions similaires

  1. awk et les expressions régulières
    Par olivier.pz dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/06/2015, 11h13
  2. Utilisation d'une expression régulière dans un AWK
    Par Nattiz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/08/2013, 21h08
  3. Réponses: 8
    Dernier message: 26/09/2011, 16h56
  4. Expression régulière / action awk
    Par pmier dans le forum Unix
    Réponses: 1
    Dernier message: 11/07/2011, 22h24
  5. [AWK]expression régulière variable
    Par GmGari dans le forum Linux
    Réponses: 1
    Dernier message: 11/12/2007, 14h25

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