2012-03-09 105 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