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

时间:2012-12-22 16:27:32

标签: java eclipse rad

我在一个带有随机名称的项目中有大约600个java类(名称中没有模式)。

我想用另一行替换这些类中的特定行。

例如这些文件中的行是

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

我希望用

替换该行
System.out.println("Object is: "+myObject);

以上几行只是一个展示我想要实现的目标的例子。

我正在使用RAD 7.5进行开发。

是否有一种简单的方法可以同时在所有600个文件中执行此操作?

2 个答案:

答案 0 :(得分:3)

是。打开“搜索 - 文件...”对话框,输入要搜索的内容和所需的文件筛选器,然后单击替换

答案 1 :(得分:1)

  

没有。无法访问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. 其余的是要运行它的文件。
  6. 可替换地,

    find . -name \*.java
    

    应该列出当前目录下的所有java源文件。

    假设目录的路径中没有空格,则可以执行

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

    其中...是上面的替换,在工作目录下的所有Java源上运行它。

相关问题