Philippe Strauss a écrit :
>
> voui mais meme les regexp etendue n'ont pas d'operateur AND, la barre verticale
> signifie un OU logique, donc cette regexp matchera (oh le bo mot) aussi pour
il me semblait aussi, c'est d'ailleurs par là que mes probs ont
commencés :)
> un fichier ne contenant qu'une des deux partie de la regexp, par exemple
> 'matrix'.
> l'utilisation du && du shell est je trouve la plus jolie des solutions,
> celle de Jean-Albert Ferrez.$
mais merci quand même à tous pour vos conseils... je constate juste
qu'il n'y a pas de solution standard (canonique dirait mon mentor)...
si vous le permettez et si ça peut rendre service à qqun, je vous joint
ici le petit programme python que j'ai écrit... ATTENTION, c'est juste
un premier jet... faudrait voir à faire les choses un peu plus
proprement si on voulait vraiment l'utiliser...
###----------- multigrep.py -------------------
# /usr/bin/python
import fileinput, sys, string
usage = """
Usage : python multigrep.py <#patterns> <pattern_1> .. <pattern_n>
<files>
<#pattern> nombre de patterns de recherche
<pattern_k> les différents patterns séparés par des espaces
<files> la liste des fichiers à examiner
"""
if len(sys.argv) < 3 :
print usage;
##print sys.argv
n = int(sys.argv[1]);
searchterms, sys.argv[1] = sys.argv[2:2+n],sys.argv[2+n:];
filelist = sys.argv[1];
##print searchterms;
try :
for searchterm in searchterms:
##print filelist;
if len(filelist) :
##print "search term : ",searchterm;
sys.argv[1:] = filelist[:];
##print sys.argv[1];
filelist = [];
for line in fileinput.input():
if (string.count(line, searchterm)) :
if not (fileinput.filename() in filelist) :
filelist = filelist + [fileinput.filename()];
##print "filelist = ",filelist, "\n\n";
except IOError:
print usage;
else :
for file in filelist :
print file;
###----------- multigrep.py -------------------
merci encore et bonne soirée
claude
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.