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
Version imprimable
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
Code:grep [chaine à chercher guillemets obligatoires si espace] [nom du fichier ou faire les recherches]
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....
merci bien
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...
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).
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
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 !Citation:
grep [chaine à chercher guillemets obligatoires si espace] [nom du fichier ou faire les recherches]
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 :
Merci beaucoup !Code:
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]
la commande tac permet de lire un fichier à l'envers
un truc dans ce gout là peut-être (non-testé) :
Code:{ 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 :lol:
Bonjour,
Et bien voici comment je l'utilise pour rechercher une chaîne de caractère dans un fichier.
Soit:Code:grep "mode_de_recherche_recurcif" "cequejecherche" "chemin_de_départ"
ou encore avec une couleur pour plus de clarté:Code:
1
2 grep -r "hello" /home/ grep "hello" /home/fichier.txt
Cordialement,Code:
1
2 grep -r --color=auto "hello" /home/ grep "hello" --color=auto /home/fichier.txt
Sun