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
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 : 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
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).
Cordialement.
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 !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 : 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]
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
Bonjour,
Et bien voici comment je l'utilise pour rechercher une chaîne de caractère dans un fichier.
Soit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part grep "mode_de_recherche_recurcif" "cequejecherche" "chemin_de_départ"
ou encore avec une couleur pour plus de clarté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 grep -r "hello" /home/ grep "hello" /home/fichier.txt
Cordialement,
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
Sun
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager