Grep un peu spécial...
kilian
Messages postés
8732
Date d'inscription
Statut
Modérateur
Dernière intervention
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Voilà j'ai un besoin un peu spécial. J'ai une quantité phénoménale de fichiers dans un repertoire (qui en contient plein d'autres).
Je veux relever dans ces repertoires tous les fichiers qui possèdent certains mot à l'intérieur.
Mettons je cherche tous les fichiers qui contienent "barbe", "cerise", "montagne" et "charrette".
Sachant d'ailleurs que ces mots peuvent être indifféremment en minuscule ou en majuscule et pas necessairement sur la même ligne, c'est d'ailleurs ce dernier élement qui coince.
En effet grep ne fonctionne que ligne par ligne si je ne m'abuse, or moi j'ai besoin de vérifier un fichier entier avec des expressions régulières. De préférence pas un script Perl, d'abord parce que je connais pas le Perl et que j'aimerais un truc rapide (plutôt codé en C comme grep).
Pensez vous que ce logiciel existe déjà ou bien faudra t'il que je code moi même ça en C?
Ou peut être est ce une option de grep que je n'aurais pas vu....
Merci d'avance.
Voilà j'ai un besoin un peu spécial. J'ai une quantité phénoménale de fichiers dans un repertoire (qui en contient plein d'autres).
Je veux relever dans ces repertoires tous les fichiers qui possèdent certains mot à l'intérieur.
Mettons je cherche tous les fichiers qui contienent "barbe", "cerise", "montagne" et "charrette".
Sachant d'ailleurs que ces mots peuvent être indifféremment en minuscule ou en majuscule et pas necessairement sur la même ligne, c'est d'ailleurs ce dernier élement qui coince.
En effet grep ne fonctionne que ligne par ligne si je ne m'abuse, or moi j'ai besoin de vérifier un fichier entier avec des expressions régulières. De préférence pas un script Perl, d'abord parce que je connais pas le Perl et que j'aimerais un truc rapide (plutôt codé en C comme grep).
Pensez vous que ce logiciel existe déjà ou bien faudra t'il que je code moi même ça en C?
Ou peut être est ce une option de grep que je n'aurais pas vu....
Merci d'avance.
A voir également:
- Grep un peu spécial...
- Caractere special - Guide
- Dossier spécial - Guide
- Symbole special - Guide
- Ecriture special instagram - Guide
- Ecriture special facebook - Guide
8 réponses
Salut,
Euh... qu'entends-tu exactement par "En effet grep ne fonctionne que ligne par ligne si je ne m'abuse, or moi j'ai besoin de vérifier un fichier entier avec des expressions régulières." ???
Tu veux chopper des intervalles ?
Euh... qu'entends-tu exactement par "En effet grep ne fonctionne que ligne par ligne si je ne m'abuse, or moi j'ai besoin de vérifier un fichier entier avec des expressions régulières." ???
Tu veux chopper des intervalles ?
Ben je ne sais pas trop ce que tu entends par intervalles (j'ai toujours un peu utilisé les regexp comme un boucher)...
Je te donne un exemple:
Si cette page matche tous les mots en gras (c'est le cas ici), elle est bonne.
Tu vois ce que je veux dire? Mais les mots peuvent ne pas être dans cet ordre...
Je te donne un exemple:
Ce monsieur avait une barbe ample, et certes le peuple le jalousait. <-- saut de ligne Mais tandis tandis que de la montagne perlait une rivière de cerise <-- saut de ligne La charette d'icelui barbu tnetait de les recueuilir
Si cette page matche tous les mots en gras (c'est le cas ici), elle est bonne.
Tu vois ce que je veux dire? Mais les mots peuvent ne pas être dans cet ordre...
Salut,
ou alors j'ai pas compris la demande...
grep -E "barbe|cerise|montagne|charrette" *en étant dans le répertoire...?
ou alors j'ai pas compris la demande...
Oui mais pour que ton expression marche, il faut que tous les mots soient présents dans la même ligne. De plus ici ça matchera si un seul des mots est présent alors qu'il faudrait que tous soient présents.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui mais pour que ton expression marche, il faut que tous les mots soient présents dans la même ligne.
Non, non ;-))
De plus ici ça matchera si un seul des mots est présent alors qu'il faudrait que tous soient présents.
Elles sont contradictoires ces 2 phrases, non ? ou c'est moi qui ai mal compris ? ;-\
Non, non ;-))
De plus ici ça matchera si un seul des mots est présent alors qu'il faudrait que tous soient présents.
Elles sont contradictoires ces 2 phrases, non ? ou c'est moi qui ai mal compris ? ;-\
:-D
Ca marchera si un seul des mots est présent dans une des lignes du fichier en fait, c'est bien ça?
Ca marchera si un seul des mots est présent dans une des lignes du fichier en fait, c'est bien ça?
je récapitule pour être sûr d'avoir bien compris:
tu cherches à sortir la liste des fichiers qui contiennent les 4 mots peu importe l'ordre, peu importe la casse, et peu importe leur emplacement dans le fichier , c'est ça ?
tu cherches à sortir la liste des fichiers qui contiennent les 4 mots peu importe l'ordre, peu importe la casse, et peu importe leur emplacement dans le fichier , c'est ça ?
Parfaitement!
En attendant j'ai bien une solution temporaire:
grep "mot1" -r rep | cut -d : -f 1
Me sort tous les fichiers comportant tel mot. Après je peux réitérer sur ces mêmes fichiers un test pour savoir s'il y a le deuxième mot etc...
Qu'est ce que vous en pensez? Ce n'est pas très élégant mais bon...
EDIT: (J'en profite pour dire que grep est sacrément rapide, je ne l'avais jamais vu tester une montagne de fichiers et il se débrouille bien....)
En attendant j'ai bien une solution temporaire:
grep "mot1" -r rep | cut -d : -f 1
Me sort tous les fichiers comportant tel mot. Après je peux réitérer sur ces mêmes fichiers un test pour savoir s'il y a le deuxième mot etc...
Qu'est ce que vous en pensez? Ce n'est pas très élégant mais bon...
EDIT: (J'en profite pour dire que grep est sacrément rapide, je ne l'avais jamais vu tester une montagne de fichiers et il se débrouille bien....)