2010-05-21 156 views
0

我有一個巨大的.java文件,我想查找給定className的所有聲明對象。我認爲該聲明總是會有以下簽名:bash grep查找java聲明

className objName;

的className = OBJNAME

的className = OBJNAME

可以有人建議我一個grep的格局,這將發現這些簽名。我有以下的(不完全):

cat $rootFile | grep "$className " 

例:

如果輸入文件是:

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

我想提取以下列表:

pol1 
pol2 
pol3 
pol4 
pol5 
pol6 
+0

這是沒有必要使用'cat'。 'grep'和Perl(用在下面的答案中)都接受文件名作爲參數。另外,'grep'不是Bash的一部分,所以沒有「bash grep」這樣的東西。 – 2010-05-21 03:43:13

回答

3

可能perl可以在這裏幫助

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

使用SED,可以做以及

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

謝謝丹尼斯! – Kunal 2010-05-21 03:39:31

+0

無用的'貓'。否則+1。 – 2010-05-21 03:43:38

+0

非常感謝。這一項工作。感謝大家的貢獻。 – Amarsh 2010-05-21 04:33:55