2012-03-09 87 views
1

任何人都可以使用shell腳本來完成以下任務嗎?用於從.java文件中查找和刪除文本模式的Shell腳本

我想從java文件中刪除catch塊。我需要一個可以搜索catch塊並將其刪除的shell腳本。

我有數百個具有以下catch塊java文件,他們需要通過shell腳本被刪除:

} catch (SomeException e) { 
if (Loging.isOn()) { 
    System.out.println("Exception"); 
    // and also some code which differs from file to file. 
} 
+1

*必須*您是否使用shell腳本?這可能有更好的工具。 – 2012-03-09 10:36:26

+0

不,我必須使用shell腳本,因爲我必須自動簽出 - 編輯 - 保存 - 檢入文件..我們有shell腳本來簽入和簽出...只需要腳本來編輯文件... – amithgc 2012-03-09 10:37:49

+0

這是你需要刪除的確切字符串嗎?您可以在任何文本編輯器中使用查找/替換。有些編輯器也允許您在多個文件中同時查找/替換。 – 2012-03-09 10:38:17

回答

1

我在Windows上,沒有Linux機器方便。我假設你在Linux系統上。你需要的是這個sed命令,可在Linux的BASH中找到。我無法驗證此代碼,但它應該按照書面形式工作,也許需要進行調整。這假設你想要刪除的塊以「} catch」開始並以「}」結束,在該塊內沒有其他右側花括號。當然,當你運行這個代碼時,你需要在正確的目錄中,所以使用CD命令來達到目的。如果排除「in ...」,則循環將運行,就好像「in $ @」一樣。

for i in /directory/*.java 
do 
    # echo 'Working on $i file' 
    copy $i tempfil.txt 
    sed -e '/\} catch/,/^\}/d' tempfil.txt > $i 
done 
+0

非常感謝... – amithgc 2012-03-13 05:42:17