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 motif ET motif


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut grep motif ET motif
    Désolé de revenir sur le sujet fermé depuis longtemps, mais bon.

    Je galère pas mal pour faire à peu près la même chose SAUF QUE je cherche deux suites de caractères appartenant à un fichier.

    C'est à dire faire un ET et pas un OU
    dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find resultat -type f -exec grep '\(tache\|Temps\|Power\)' {} \; > resultat/resultat.txt
    Je remplace les | par des & et cela ne fonctionne pas. Mais pourquoi donc?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par blancheln Voir le message
    Je galère pas mal pour faire à peu près la même chose SAUF QUE je cherche deux suites de caractères appartenant à un fichier.
    Dans la même ligne ou pas?

    Peux-tu donner un exemple de ce que tu veux?


    C'est à dire faire un ET et pas un OU
    dans:
    find resultat -type f -exec grep '\(tache\|Temps\|Power\)' {} \; > resultat/resultat.txt

    je remplace les | par des & et cela ne fonctionne pas. Mais pourquoi donc?
    ce n'est pas si simple...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    tu peux être plus précis ?
    donne un extrait du fichier entrée, et ce que tu veux obtenir.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Déjà, je cherche les fichiers dans un répertoire contenant deux suites de caractères.
    Ces fichier sont zippés, j'utilise donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12"'&'SL="FRKMN' {}  \;
    cela ne fonctionne pas. Ca marche qu'avec une seule suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -name '*.zip' -exec zipgrep  'DA="2012-10-12"' {}  \;

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Citation Envoyé par jack-ft
    Dans la même ligne ou pas?
    !
    un motif est toujours avant l'autre, ou est-ce aléatoire ?
    ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    La deuxième recherche , balise SL, est toujours Après la balise DA

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    he, jack, va chercher une tenaille, on tient un bon morceau, j'crois qu'ça va venir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep 'motif1.*motif2' fichier
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Par défaut
    Bonjour,

    Ne peux-tu pas appeler trois grep séparés par des pipes ?
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find resultat -type f | grep tache | grep Temps | grep Power > resultat/resultat.txt

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Une autre piste awk: découper le fichier en prennant DA= comme séparateur d'enregistrement (RS), vérifier si au moins un record contient les valeurs de DA et SL recherchées et sortir de suite pour éviter de parcourir inutilement le fichier dès les conditions réunies.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DA="2012-08-07"
    FL="FRLRH"
    find ... -exec | zcat | awk '/'$DA'/&&/'$FL'/{print FILENAME;exit}' RS="DA="

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par ripat Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DA="2012-08-07"
    FL="FRLRH"
    find ... -exec | zcat | awk '/'$DA'/&&/'$FL'/{print FILENAME;exit}' RS="DA="
    Comme dirait notre ami, UMQ!

    Lorsque ni DA ni FL ne contient d'espace (ce qui est bien le cas ici), tout va bien!
    Mais, pour que la formule que tu proposes soit plus universelle et éviter le message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk: non-terminated regular expression 2012... at source line 1
    je propose d'utiliser plus de quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -exec | zcat | awk '/'"$DA"'/&&/'"$FL"'/{print FILENAME;exit}' RS="DA="
    ou, plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -exec | zcat | awk "/$DA/&&/$FL/{print FILENAME;exit}" RS="DA="
    voire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -exec | zcat | awk "/${DA}/&&/${FL}/{print FILENAME;exit}" RS="DA="

Discussions similaires

  1. [grep] Motif contenu dans d'autres mots
    Par malik0 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 04/03/2013, 15h35
  2. grep ne contenant pas un motif
    Par danathane dans le forum Linux
    Réponses: 3
    Dernier message: 24/01/2011, 17h35
  3. Trouver la ligne du dernier motif d'un grep
    Par Erlen dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 08/12/2010, 22h11
  4. [grep fichier word]recuperer lignes tableau motif
    Par fantomas261 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/09/2007, 13h09
  5. [VB6] [Graphisme] Floodfill et motif
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/12/2002, 09h35

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