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 :

find + grep recherche de plusieurs mots dans des fichiers différents


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut find + grep recherche de plusieurs mots dans des fichiers différents
    Bonjour
    j'ai une sortie dans l'invite commande que je redérige vers plusieurs fichiers textes
    execute1:
    $(foreach i, 1 2 3 , \
    $(SIMDIR)/sim-cache -interval 15805632 $(C$i) $(BENCHDIR) > /home/asmaa/simplescalar/simplesim-3.0/resultat/outbasicmath_small$(i).txt ; \
    )

    remarque sim-cache et -interval c'est des commandes spécifiques à l'outils donc à ignorer sinon le script veut dire executer plusieurs fois cette commande et la sortie vous la mettez dans des fichiers outbasicmath_small$(i).txt donc comme dans l'exemple on obtient 3 fichiers sorties

    Dans chaque fichier outbasicmath_small$(i).txt j'ai une sortie qui ressemble à ça
    ..........................
    6.230825429620 radians = 357 degrees
    6.248278722140 radians = 358 degrees
    6.265732014660 radians = 359 degrees
    6.283185307180 radians = 360 degrees
    tache n 1
    Temps tot n 3.76749e+07
    Power tot2.08277e+08
    tache n 2
    Temps tot n 8.4999e+07
    Power tot4.92721e+08
    tache n 3
    ..........................

    et je m'intéresse à quelques informations donc je veux les extraires pour les mettre dans un seule fichier que j'appel resultat

    voici la commande que j'exécute

    results4:
    find resultat -type f -exec grep "tache" {} \; > resultat/resultat.txt

    resultat est la directory qui contient tout les fichiers outbasicmath_small$(i).txt
    j'obtiens :
    tache n1
    tache n2
    tache n3
    ect

    maintenant je veux avoir le résultat suivant
    tache n 1
    Temps tot n 3.76749e+07
    Power tot2.08277e+08
    tache n 2
    Temps tot n 8.4999e+07
    Power tot4.92721e+08
    tache n 3
    ..........................
    comment je modifie results4:
    find resultat -type f -exec grep "tache" {} \; > resultat/resultat.txt
    donc la je suis obliger de changer la recherche avec plusieurs mots

    exemple je fais ça ?
    find resultat -type f -exec grep '\(tache|Temps\)' {} \; > resultat/resultat.txt
    j'obtiens rien?
    pouvez vous m'aider?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    hmm, pas loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '\(tache\|Temps\|Power\)'
    maintenant, si tous les fichiers sont dans le même répertoire, genre :
    /home/asmaa/simplescalar/simplesim-3.0/resultat/outbasicmath_small*.txt
    alors, depuis /home/asmaa/simplescalar/simplesim-3.0/ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '\(tache\|Temps\|Power\)' resultat/outbasicmath_small*.txt >output-file
    devrait rendre find inutile...
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    Bonjour merci d'avoir répondu
    en exécutant
    grep '\(tache\|Temps\|Power\)' resultat/outbasicmath_small*.txt> resultat/resultat.txt
    j'obtiens :
    resultat/outbasicmath_small1.txt:tache n 1
    resultat/outbasicmath_small1.txt:Temps tot n 3.76749e+07
    resultat/outbasicmath_small1.txtower tot2.08277e+08
    resultat/outbasicmath_small1.txt:tache n 2
    resultat/outbasicmath_small1.txt:Temps tot n 8.4999e+07
    resultat/outbasicmath_small1.txtower tot4.92721e+08
    resultat/outbasicmath_small1.txt:tache n 3
    ......................
    mais je ne veux pas avoir le chemin du fichier d'origine c'est a dire
    resultat/outbasicmath_small1.txt:tache n 1
    je veux avoir uniquement
    ache n 1
    Temps tot n 3.76749e+07
    Power tot2.08277e+08
    tache n 2
    Temps tot n 8.4999e+07
    Power tot4.92721e+08
    tache n 3
    ..........................
    merci de m'aider

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    Tiens ? il n'y a pas de manpage pour grep sur ton système ?

    Citation Envoyé par man grep
    -h, --no-filename
    Ne pas afficher le nom des fichiers au début des lignes qui correspondent. C’est le comportement par défaut quand il n’y a qu’un fichier (ou que l’entrée standard) dans lequel effectuer la recherche.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    Je voudrais juste ajouter que l'execution de la commande suivante :
    find resultat -type f -exec grep "tache" {} \;>> resultat/resultat.txt
    donne uniquement
    tache n 1
    tache n 2
    tache n 3
    tache n 4
    ...................
    mais biensure que je savais que grep donne le fichiers source contenant le mot à rechercher
    est ce que vous pouvez m'aider?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    voici la solution
    find resultat -type f -exec grep '\(tache\|Temps\|Power\)' {} \; > resultat/resultat.txt
    j'obtiens
    tache n 1
    Temps tot n 4.94082e+07
    Power tot1.84469e+08
    tache n 2
    Temps tot n 1.04819e+08
    Power tot3.97607e+08
    tache n 3
    Temps tot n 1.62769e+08
    Power tot6.22818e+08

    merci encore d'avoir répondu

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

Discussions similaires

  1. [XL-2007] Recherche de plusieurs mots dans une colonne
    Par merlinus3000 dans le forum Excel
    Réponses: 2
    Dernier message: 30/09/2013, 12h38
  2. Rechercher plusieurs mots dans un fichier avec sed
    Par DevServlet dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/01/2012, 14h40
  3. Recherche de plusieurs mots dans une chaine
    Par Thib6670 dans le forum C#
    Réponses: 3
    Dernier message: 30/06/2011, 15h19
  4. Recherche de plusieurs mots dans un texte : Aho-Corasick VS Karp-Rabin
    Par j0o0 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 28/11/2010, 12h17
  5. [MySQL] recherche avec plusieurs mots dans mon moteur
    Par hadjiphp dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2009, 08h53

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