我在一个带有随机名称的项目中有大约600个java类(名称中没有模式)。
我想用另一行替换这些类中的特定行。
例如这些文件中的行是
System.out.println("Product is: "+myProduct);
我希望用
替换该行System.out.println("Object is: "+myObject);
以上几行只是一个展示我想要实现的目标的例子。
我正在使用RAD 7.5进行开发。
是否有一种简单的方法可以同时在所有600个文件中执行此操作?
答案 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 ...
打破它:
-i
表示将参数视为要就地修改的文件.bak
表示在进行更改前复制.bak
扩展名的输入文件-p
表示将程序包装在一个循环中,该循环抓取一行,运行程序并打印该行-e 's/.../.../'
表示引用的部分是要运行的程序,它执行正则表达式替换。可替换地,
find . -name \*.java
应该列出当前目录下的所有java源文件。
假设目录的路径中没有空格,则可以执行
find . -name \*.java | xargs perl -i.bak -pe 's/.../.../'
其中...
是上面的替换,在工作目录下的所有Java源上运行它。