簡體   English   中英

替換大量java源文件中的一行

[英]Replacing a line in a large number of java source files

我在一個帶有隨機名稱的項目中有大約600個java類(名稱中沒有模式)。

我想用另一行替換這些類中的特定行。

例如,這些文件中的行是

System.out.println("Product is: "+myProduct);

我想用那個替換那一行

System.out.println("Object is: "+myObject);

上面的這一行只是一個展示我想要實現的目標的例子。

我正在使用RAD 7.5進行開發。

是否有一種簡單的方法可以同時在所有600個文件中執行此操作?

是。 通過打開“搜索 - 文件...”對話框,輸入要搜索的內容和所需的文件篩選器,然后單擊“ 替換”

不可以訪問UNIX系統。

那是你的第一個問題。 安裝Cygwin以便擁有可靠的shell,然后您可以學習如何對源代碼進行批處理操作。 能夠grep周圍很容易可以使它更容易學習在大型代碼庫的方式縮小很可能導致一個棘手的問題的代碼量。

一旦安裝完畢,就可以解決當前的問題

perl -i.bak \
  -pe 's/System.out.println\("Product is: "+myProduct\);/System.out.println("Object is: "+myObject);/' \
  file0.java file1.java ...

打破它:

  1. -i表示將參數視為要就地修改的文件
  2. .bak表示在進行更改之前,使用.bak擴展名復制輸入文件
  3. -p表示將程序包裝在一個循環中,該循環抓取一行,運行程序並打印該行
  4. -e 's/.../.../'表示引用的部分是要運行的程序,它執行正則表達式替換。
  5. 其余的是運行它的文件。

或者,

find . -name \*.java

應該列出當前目錄下的所有java源文件。

假設目錄的路徑中沒有空格,那么您可以這樣做

find . -name \*.java | xargs perl -i.bak -pe 's/.../.../'

其中...是上面的替換,在工作目錄下的所有Java源上運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM