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 :

Chercher un mot donné dans un Fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut Chercher un mot donné dans un Fichier
    Bonjour tout le monde

    Je cherche une commande qui me permet de chercher une chaîne dans un fichier

    j'ai penser a grep mais je ne connais pas le bon syntaxe

    Merci d'avance

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 437
    Points : 43 078
    Points
    43 078
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep [chaine à chercher guillemets obligatoires si espace] [nom du fichier ou faire les recherches]
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    merci pour votre réponse

    par compte j'ai une autre souci mon Fichier est très volumineux il a presque 50Go

    je viens de tester la commande grep il prenne beaucoup de temps pour récupérer l'information

    existe t'il une option a ajouter avec grep pour accélérer la recherche

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par abdallah_mehdoini Voir le message
    merci pour votre réponse

    par compte j'ai une autre souci mon Fichier est très volumineux il a presque 50Go

    je viens de tester la commande grep il prenne beaucoup de temps pour récupérer l'information

    existe t'il une option a ajouter avec grep pour accélérer la recherche
    non mais ... parce qu'il y a un mais... mieux le pattern à chercher est défini et apparraît souvent dans le fichier plus ça va vite (tu gagnera pas 1 seconde au giga ..hein.... faut pas réver non plus)
    de toute façon faire des fichiers de cette taille .... déjà ... quand on peut éviter....

  5. #5
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    merci bien

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par abdallah_mehdoini Voir le message
    mon Fichier est très volumineux il a presque 50Go (...) existe t'il une option a ajouter avec grep pour accélérer la recherche
    s'il s'agit d'une chaine fixe l'option -F empêchera grep d'effectuer la recherche comme s'il s'agissait d'une regex, ce qui peut significativement accélérer les choses

    d'un autre coté... quelle idée d'avoir un fichier de 50G ?? si c'est un fichier texte (genre le dump monolithique d'une db sql obèse ?) il est peut-être envisageable de le découper en plusieurs morceaux et lancer plusieurs grep en parallèle
    avis perso, 5G par fichier c'est une taille raisonnable pour travailler dessus, au delà ça devient un peu infernal...

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Si on avait plus d'information sur le format du fichier, on devrait pouvoir accélérer son exploitation.
    On pourrait par exemple l'exploiter en parallèle via dd et grep.
    Sinon, au lieu d'utiliser grep, peut-être que ton awk ou egrep serait plus rapide car ceux-ci en général, utilise le moteur DFA alors que grep est plus basé sur un moteur NFA (pour les puristes, gnu grep ou gnu awk utilise une version hybride DFA NFA).
    Cordialement.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    C'est exactement ce qu'il me faut !! Merci les gars ...

    Donc je vais compléter ma demande sur la base de ce que vous avez écris !! :-D

    grep [chaine à chercher guillemets obligatoires si espace] [nom du fichier ou faire les recherches]
    Ce dont j'ai besoin moi de faire, c'est de récupérer les résultats d'une recherche "grep", et de mettre tout ça dans un fichier !

    Je vais donc écrire :


    grep [chaine à chercher guillemets obligatoires si espace] [nom du fichier ou faire les recherches] > [nom du fichier ou je souhaite écrire mon résultat !]

    Question ?
    1) Existe-t-il une commande à ajouter à grep pour que le fichier soit parcouru à l’envers ?

    2) En réalité j'aurais besoin de parcourir plusieurs fichiers et de concaténer tout les résultats dans un même fichier !

    En gros, je vais écrire un script qui devrait ressembler à ça :




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
    #script de recherche d'expression dans plusieurs fichier et d'écriture dans un seul fi
    
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_1_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_2_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_3_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_4_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_5_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    grep [chaine_a_chercher_guillemets_obligatoires_si_espace] [nom_du_fichier_6_ou_faire_les_recherches]  > [nom_du_fichier_ou_je_souhaite_écrire_mes_résultats]
    Merci beaucoup !

  9. #9
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    la commande tac permet de lire un fichier à l'envers

    un truc dans ce gout là peut-être (non-testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { cat liste_fichiers.txt | xargs -P8 -n1 -I{} bash -c "tac {} | grep -F -f patterns.txt"; } > resultats.txt
    • liste_fichiers.txt doit contenir la liste des fichiers dans lesquels effectuer la recherche, 1 par ligne
    • patterns.txt doit contenir la liste des chaines à rechercher, 1 par ligne
    • resultats.txt est le fichier de sortie

    chercher à quoi correspondent les diverses options dans les manpages est laissé en exercice...

    ...et s'il est question de traiter 6 ou plus fichiers de 50G chacun, s'attendre à mettre la machine à genoux pendant un moment

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    chercher à quoi correspondent les diverses options dans les manpages est laissé en exercice...
    Et comme on est chez gnu, si l'exercice est bien fait, on devrait pouvoir ensuite se passer de cat liste_de_fichiers.txt en utilisant l'option qui va bien de xargs.
    Cordialement.

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Et comme on est chez gnu, si l'exercice est bien fait, on devrait pouvoir ensuite se passer de cat liste_de_fichiers.txt en utilisant l'option qui va bien de xargs.
    mais quel pinailleur sérieux

    j'avoue j'y ai pensé et j'ai eu la flemme de modif :p

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    la commande tac permet de lire un fichier à l'envers

    un truc dans ce gout là peut-être (non-testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { cat liste_fichiers.txt | xargs -P8 -n1 -I{} bash -c "tac {} | grep -F -f patterns.txt"; } > resultats.txt
    • liste_fichiers.txt doit contenir la liste des fichiers dans lesquels effectuer la recherche, 1 par ligne
    • patterns.txt doit contenir la liste des chaines à rechercher, 1 par ligne
    • resultats.txt est le fichier de sortie

    chercher à quoi correspondent les diverses options dans les manpages est laissé en exercice...

    ...et s'il est question de traiter 6 ou plus fichiers de 50G chacun, s'attendre à mettre la machine à genoux pendant un moment
    Thanks thanks amigos BufferBob !!
    You save my life ! I own you one life.

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2014
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par abdallah_mehdoini Voir le message
    Bonjour tout le monde

    Je cherche une commande qui me permet de chercher une chaîne dans un fichier : GREP

    j'ai penser a grep mais je ne connais pas le bon syntaxe : grep -h, grep --help, man grep

    Merci d'avance
    Bonjour,

    Et bien voici comment je l'utilise pour rechercher une chaîne de caractère dans un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "mode_de_recherche_recurcif" "cequejecherche" "chemin_de_départ"
    Soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep -r "hello" /home/
    grep "hello" /home/fichier.txt
    ou encore avec une couleur pour plus de clarté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep -r --color=auto "hello" /home/
    grep "hello" --color=auto /home/fichier.txt
    Cordialement,
    Sun

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

Discussions similaires

  1. Chercher mot exact dans un fichier
    Par lokomass dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 09/02/2015, 11h06
  2. Réponses: 3
    Dernier message: 18/06/2014, 10h44
  3. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51
  4. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  5. Temps d'accès à des données dans un fichier
    Par TONIAPEL dans le forum Assembleur
    Réponses: 5
    Dernier message: 28/09/2003, 15h21

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