close
在Trace中途接手的專案,常以關鍵字搜尋未知的原始程式碼,期能在最短時間找到原因解決之.
若學會Regular Expression,搜尋過程往往能事半功倍,所付出的代價就是要學會該Regular Expression,這是必然.
以輸入法為例,注音輸入法是國人不學而會的中文輸入法,倉頡,嘸蝦米總要付出學習的過程才能打字比別人快.
好像也有IDE支援可以針對全面的java, jsp, xml, html, ini進行Regular Expression的搜索與替換.
而我目前也寫了一支可以在EditPlus下跑的搜尋程式,列出關鍵字所在的源碼檔與該列程式碼與附上列號.
下面可程式當然可以再補強,可針對不只一個目錄搜尋,雖無華麗的GUI介面,至少在本案上幫了不少忙:
#!/usr/bin/perl
my $path = "D:/Project/RDF/workspace/fb/src/com/systex/fb"; # 指定搜尋目錄
my $suffix = "java";                 # 檔尾, 通常指副檔名, 亦可設成java|jsp表示連jsp一起搜
my $code = 0;                                                                          # 0:顯示程式行號與內容 -1:只顯示檔名
sub searchWord {
 my $file = shift;
 open F, $file or die "error:$!";
 my $line_no = 0;
 while (<F>) {
  $line_no++;
  if (/Simulat/i) {  # \"cust_?id[^\"]*/i jdbc\:oracle\:thin\:
   print "$file \n" if($code < 1);
   last if($code == -1);
   print "$line_no\t$_";
   $code = 1;
  } 
 }
 if($code == 1) {
  $code = 0;
  print "\n";  ## 換檔案空一行
 }
 close F;
}
sub searchDir {
 my $dir = shift;
 opendir(DIR, $dir) or die "error:$!";
 my @dirs = readdir(DIR);
 closedir DIR;
 for (@dirs) {
  unless (/\.$/) {
   my $dir1 = "$dir/$_";
   if (-d $dir1) {  # 目錄
    ## print "search $dir1 ...\n";
    &searchDir($dir1);
   } else {
    ## print "Find>> $dir1 ...\n";
    # &searchWord($dir1);
    &searchWord($dir1) if ($dir1 =~ /${suffix}$/);
    #if ($dir1 =~ /\/I[A-Za-z0-9]+Action\.java/) {
    # print "$dir1\n";
    #}
   }
  }
 }
}
&searchDir($path);
 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jemmy 的頭像
    Jemmy

    Jemmy Walker

    Jemmy 發表在 痞客邦 留言(0) 人氣()