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 :

grep ne trouve pas un pattern


Sujet :

Shell et commandes GNU

  1. #1
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut grep ne trouve pas un pattern
    Bonjour à tous,

    D'habitude j'arrive à résoudre la plupart des problèmes que je rencontre mais la ... je ne vois pas trop ce qu'il ce passe.

    Si je cherche un pattern que je sais exister dans un fichier, grep ne trouve rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     grep PATTERN fichier.csv
    Binary file fichier.csv matches
    Si je fait la recherche avec awk par contre, je trouve les lignes correspondantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    awk '$0 ~ /PATTERN/ { print }' fichier.csv
    PATTERN;data1;data2;data3
    De plus, j'arrive à éditer / rechercher dans ce fichier avec vi sans problème.


    et lorsque je cherche à savoir si c'est un fichier binaire ( ce que laisse supposer le retour de la première commande )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     file fichier.csv
    fichier.csv: ISO-8859 text, with CRLF line terminators

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


    et si tu convertis le fichier en UTF-8 et au format UNIX ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    -> Unix : Idem
    -> UTF-8 : Fonctionne

    Merci ! Mais je ne comprend toujours pas pourquoi ...

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Donne des infos sur ton motif ("pattern" en anglais).
    Si tu as des caractères spéciaux, tous les logiciels ne comprennent pas les regex de la même façon.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Le pattern c'est mon nom de famille en majuscule [A-Z], il n'y a pas d'accent. Le caractère le plus exotique de la ligne, c'est un E majuscule accentué qui était effectivement mal interprété en ISO-8859-1

    Je change la locale :

    Et là le grep trouve mon pattern

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Je vois que la discussion est résolue.

    Mais si d'autres tombent sur cette page, j'avais pensé à 2 choses:

    • + et \+ (par exemple) ne sont pas interprété identiquement selon les logiciels.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      $ grep '[a-z]+' fichier.csv
      $ grep '[a-z]\+' fichier.csv
      f1;f1a;rep_source
      f2;f2a;ferff2arep_source
      f3;f3a;rep_source
      $ awk '/[a-z]\+/' fichier.csv
      $ awk '/[a-z]+/' fichier.csv
      f1;f1a;rep_source
      f2;f2a;ferff2arep_source
      f3;f3a;rep_source
    • Si tu as une fin de ligne, n'oublie pas qu'il y a un \r avant ! (Dans ton cas)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      grep 'Et voici mon nom :\r$' fichier
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    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
    Citation Envoyé par becket Voir le message
    Si je cherche un pattern que je sais exister dans un fichier, grep ne trouve rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     grep PATTERN fichier.csv
    Binary file fichier.csv matches
    Si, grep trouve bien le pattern mais ne te l'affiche pas car il considère ton fichier comme un fichier binaire.
    Et ici, comme le fichier est en iso-8859 et que ta locale doit être une utf8 quelconque, grep doit detecter des données qui ne sont pas des caractères utf8, donc pour lui le fichier est un binaire.

    ça passe avec la locale C, car pour celle-ci, tout est caractères.
    Cordialement.

  8. #8
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Solution supplémentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    grep --binary-file=text  PATTERN file
    grep -a PATTERN file

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

Discussions similaires

  1. [jonas]eclipse ne trouve pas le plugin
    Par Stessy dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 17/07/2007, 11h43
  2. Le compilateur ne trouve pas glut32.dll
    Par Vathal dans le forum GLUT
    Réponses: 3
    Dernier message: 26/01/2004, 12h34
  3. je ne trouve pas la bonne syntaxe
    Par poelvo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2003, 01h30
  4. [TP]trouve pas le graph.tpu
    Par kaygee dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 13/06/2003, 12h49
  5. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

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