2010-05-21 6 views
0

J'ai un énorme fichier .java et je veux trouver tous les objets déclarés étant donné le className. Je pense que la déclaration aura toujours la signature suivante:bash grep trouver des déclarations java

className objName;

ou

className objName =

ou

className objName =

quelqu'un peut me suggérer un modèle de grep qui trouvera ces signatures. Je donne les résultats suivants (incomplète):

cat $rootFile | grep "$className " 

Exemple:

Si le fichier d'entrée est:

Policy pol1; 
Policy pol2 ; 
Policy pol3 ; 
Policy pol4=new Policy(); 
Policy pol5 = new Policy(); 
Policy pol6= new Policy(); 

Je veux extraire la liste suivante:

pol1 
pol2 
pol3 
pol4 
pol5 
pol6 
+0

Il est pas nécessaire d'utiliser 'cat'. Les deux 'grep' et Perl (utilisés dans une réponse ci-dessous) acceptent les noms de fichiers comme arguments. De plus, 'grep' ne fait pas partie de Bash, il n'y a pas de" bash grep ". –

Répondre

3

Probablement perl peut aider ici

cat $rootFilename | perl -pe 's/Policy[ \t]+([a-zA-Z0-9_]+)[ \t]*[;=].*/\1/g' 

En utilisant sed, peut se faire aussi bien

sed -e 's/Policy[ \t]\+\([a-zA-Z0-9_]\+\)[ \t]*[;=].*/\1/g' $rootFilename 
+0

Merci Dennis !! – Kunal

+0

Utilisation inutile de 'cat'. Sinon +1. –

+0

Un grand merci. Celui-ci fonctionne. Merci à tous pour votre contribution. – Amarsh

Questions connexes