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 :

Problème grep ne donne pas le mot exact (caracteres spéciaux)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Par défaut Problème grep ne donne pas le mot exact (caracteres spéciaux)
    Bonjour,

    J'ai un document où je souhaite récupérer les mots exactes. J'utilise l'option -w mais cela ne marche pas pour toutes mes expressions. Lorsque celles-ci ont un caractère spécial comme un tiret (-), j'ai plusieurs résultats.

    Par exemple, je recherche "lui", la commande renverra "lui-même" et "lui".
    Mais si je recherche "lui-même" alors il n'y a pas de problème (j'ai bien un seul résultat: "lui-même").

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result=$(grep -w $mot $fichier)
    Je vous remercie par avance

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ grep -w lui <<< "elle
    lui-même
    lui
    elle-même"
    lui-même
    lui
    $ grep -w lui-même <<< "elle
    lui-même
    lui
    elle-même"
    lui-même
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Par défaut
    J'ai bien deux résultats différents pourtant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    grep -w lui fichier
          1 lui-même
          2 lui
    grep -w lui-même fichier
          1 lui-même

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    attache le fichier en pièce jointe, stp.
    edit:

    et le résultat attendu
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 358
    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 358
    Par défaut
    Bonjour,

    un mot est constitué des classe de caractère "A" à "Z", "a" à "z", "0" à "9" et "_" .
    Comme le "-" ne fait pas partie de la liste, le lui de lui-même est bien considéré comme un mot à part entière.

    Si cette classe de caractère ne correspond pas à tes critère de "mot", charge à toi de définir par une regex, les séparateurs de mots.

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Par défaut
    Merci pour ces explications. Cependant, mes mots à chercher sont dans des variables, comment indiquer dans une variable le séparateur qu'il convient? Merci

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 358
    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 358
    Par défaut
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "\(^\|[^A-Za-z0-9_-]\)${mot}\([^A-Za-z0-9_-]\|$\)"

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

Discussions similaires

  1. perl grep extraction du mot exact
    Par djbad dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2014, 10h54
  2. Réponses: 25
    Dernier message: 18/10/2012, 17h57
  3. Problème procédure stockée insérant pas de données
    Par Yogy dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/11/2011, 15h26
  4. [RegEx] Rechercher les chaines ne contenant pas un mot donné
    Par saramery dans le forum Langage
    Réponses: 23
    Dernier message: 27/11/2008, 12h50
  5. [RegEx] Problème preg_replace mot exact
    Par nonoco dans le forum Langage
    Réponses: 4
    Dernier message: 24/02/2008, 19h57

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