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 :

Recherche de chaine de caractères complexe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Par défaut Recherche de chaine de caractères complexe
    Bonjour

    Je souhaite faire une recherche dans un fichier d'une chaine de caractères composé de 3 éléments dans l'ordre mais avec des données entre.

    J'ai essayé avec cette instruction
    grep "element1*element2*element3" monfichier.txt

  2. #2
    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
    Par défaut
    1 - Avec des guillemets, les * sont interprétés par le shell
    2 - Tu cherches une ligne correspondant à une expression régulière donc tu dois utiliser des guillemets "simple"

    Attention la syntaxe d'une expression régulière peut ressembler à un shell expansion mais ce sont deux choses différentes qui fonctionnent différemment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep 'element1.*element2.*element3' monfichier.txt

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Citation Envoyé par becket
    Avec des guillemets, les * sont interprétés par le shell
    entre guillemets, les astérisques ne sont pas développés en la [...] liste, classée par ordre alphabétique, des noms de fichiers correspondant à ce motif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "*"
    *
    $ echo *
    fichier_a fichier_b
    Citation Envoyé par becket
    Tu cherches une ligne correspondant à une expression régulière donc tu dois utiliser des guillemets "simple"
    c'est indifférent.

    dans une regex, Un atome suivi de « * » correspond à une séquence de 0 ou plusieurs correspondances pour l'atome.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    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 103
    Par défaut
    Je moinssoie becket et je plussoie N_BaH!

    Je rajouterai une différence (àmha importante):
    Dans une chaîne avec apostrophes, les variables ne sont pas expansées ('$a' est une chaîne avec le caractère '$' et le caractère 'a', et non le contenu de la variable 'a').

    Citation Envoyé par jonas0 Voir le message
    J'ai essayé avec cette instruction
    grep "element1*element2*element3" monfichier.txt
    Essaie plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "element1.*element2.*element3" monfichier.txt
    qui se lit:
    trouver "element1", suivi de n'importe quel caractère (sauf fin de ligne) en nombre quelconque, suivi de "element2", suivi de n'importe quel caractère (sauf fin de ligne) en nombre quelconque, suivi de "element3".

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

Discussions similaires

  1. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  2. rechercher une chaine de caractère dans un fichier
    Par 3FHFEB dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2006, 11h13
  3. Réponses: 9
    Dernier message: 07/09/2006, 13h47
  4. Recherche de chaine de caractères
    Par Surtep dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 26/07/2006, 15h52
  5. recherche de chaine de caractéres
    Par donmamio dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2006, 07h22

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