为所有类添加接口

时间:2015-02-25 15:49:23

标签: regex sed

我有大约300个课程,他们现在需要实施Serializable。我以为我可以使用findsed来执行此操作。

通过查找标准工作

^public class.*{$

在其他作品中,找到包含开头Public Class的行,有一些文字并以{结尾

现在我要更换它,以便结尾实际上是

implemenets MyInterface {

之前会是

public class MyClass {

public class MyClass2 {

,输出为

public class MyClass implements MyInterface {

public class MyClass2 implements MyInterface {

我一直在查找反向引用,但它们似乎在我正在测试的Notepad ++中表现得很有趣。

任何提示都会很棒。

由于

2 个答案:

答案 0 :(得分:2)

你可以试试下面的sed命令,

$ echo 'public class MyClass {' | sed '/^public class.*{$/s/{$/implements MyInterface {/'
public class MyClass implements MyInterface {

OR

$ echo 'public class MyClass {' | sed 's/^\(public class.*\){$/\1implements MyInterface {/'
public class MyClass implements MyInterface {

答案 1 :(得分:2)

使用此sed -r

sed -r 's/(public +class +\S+ *)\{/\1 implements MyInterface {/' File.java

如果java文件已经有implements MyInterface,这将跳过替换。但是在Java类声明中,可能存在许多基于正则表达式的简单查找/替换失败的情况。