|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2005 Messages : 54 ![]() |
Salut tout le monde,
Voila j'ai un petit problème avec egrep Je suis dans un dossier qui contient des fichiers sources java (et ce dossier contient des dossiers qui contiennent aussi des fichiers java) Et en fait je dois : compter le nombre de méthodes déclarées private dans tous les fichiers, donc j'ai fait : Code :
egrep -r 'private\.*' *java . | egrep '\(' | wc -l Ensuite je dois afficher seulement le nom des fichiers qui contiennent au moins une méthode déclarées private (et là je ne vois vraiment pas) Et enfin, je dois afficher la liste des méthodes avec un accès par défaut et dont le type de retour est int ou void, donc j'ai commencé par faire : Code :
egrep -r '(int |void )\.*\(\)' *java . Voilà si quelqu'un a une idée... Merci d'avances |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Je pense que tu confonds le wild card * avec le quantificateur regex * (0 ou plusieurs).
En regex: .* (dot*) veut dire tout caractère 0 ou plusieurs fois. .+ (dot+) veut dire tout caractère 1 ou plusieurs fois. De plus, pour les parenthèses de ton alternative (xxx|yyy), il vaut mieux utiliser l'option regex extended -E. Ou bien grep \(xxx\|yyy\) ce qui est nettement moins lisible... Donnes un exemple des lignes que tu veux capturer pour voir.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() |
Code :
egrep -r 'private\.*' *java . | egrep '\(' | wc -l Citation:
Il suffit que tu utilise la commande cut pour garder uniquement la première colonne et ensuite uniq pour éliminer les doubles. Code :
egrep -r '(int |void )\.*\(\)' *java . avec les pointillés représentant... une suite de point. Dans ton cas, pas besoin de slash devant le point, puisque ce que tu veux ce ne sont pas des points mais n'importe quel caractère (sens par défaut de . ). (Remarque aussi que dans ce cas ton expression régulière ne reconnait que les méthodes sans paramètres) Citation:
|
||
|
|
00
|
|
|
#4 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 496 ![]() |
Bonjour,
L'option -l de grep permet de faire cela : afficher le nom des ficheir contenant la chaine que tu recherches. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com