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 : trouver la première ligne qui match le pattern


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut grep : trouver la première ligne qui match le pattern
    Tout est dans le titre finalement,
    Ayant un fichier.txt

    1: coucou
    2: hello
    3: bye

    je souhaiterais trouver l'option magique qui fasse
    > grep OPTIONMAGIQUE hello fichier.txt
    2

    Je suis surpris de ne rien trouver parmi toutes les options de grep..
    Je suis ouvert à d'autres chose telles que sed ou awk..
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     grep "hello" fichier.txt | cut -d':' -f 1

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci, oui en effet ca marche.
    Et d'ailleurs dans le cas ou on a pas les lignes
    on peut mettre l'option -n (qui rajoute les lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep -n "hello" fichier.txt | cut -d':' -f 1
    Je serai de mauvaise foi je dirai que ca n'est pas une option magique mais bon :-)

    Il reste encore à s'arreter apres le premier match (au cas ou il y en ait plusieurs) et je ne vois rien dans ce sens avec grep.

  4. #4
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244

  5. #5
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -n "hello" fichier.txt | cut -d':' -f 1 | head -1
    Edit: grillé (voilà ce qui arrive lorsqu'on ne rafraîchit pas !)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 465
    Points
    19 465
    Par défaut
    Au débotté...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    match="hello"
    sed -n "/$match/s/\([[:digit:]]\).*/\1/p; 1q" fichier.txt

  7. #7
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour,

    Je n'ai pas compris le problème de la même manière que ceux qui y ont répondu. Pour moi, il ne s'agit pas d'afficher un champ d'une ligne mais de donner la ligne à laquelle le modèle à été trouvé. Donc, dans l'exemple fourni par Rilpo, 1:, 2:, 3: ne font pas partie du fichier mais donne simplement le numéro de la ligne. C'est un cas plus général intéressant je trouve. J'en donne une solution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/modele/ {print "modèle trouvé ligne " FNR; quit}' fichier
    Explication:
    la commande awk est utilisée comme grep, mais la première possède des variables comme le numéro de la ligne courante: FNR.

  8. #8
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Grep permet aussi d'afficher le numéro de ligne avec l'option -n

Discussions similaires

  1. [XL-2010] Macro trouver la première ligne de tri
    Par arthour973 dans le forum Excel
    Réponses: 1
    Dernier message: 24/06/2015, 13h38
  2. Réponses: 7
    Dernier message: 26/02/2014, 14h34
  3. Comment trouver la ligne qui a le maximum ?
    Par mutkas10 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2009, 18h52
  4. Trouver la première cellule remplie d'une ligne
    Par nicacc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/08/2008, 15h16
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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