如何使用sed或awk编辑真正长的Java类

时间:2017-07-27 11:22:23

标签: java awk sed decorator

我正在为具有很多方法的类实现Decorator模式。我创建了这个Decorator类,并且只放了应该在这里的所有方法。 现在我有一个2000行的班级,每个部分都像:

@Override
public String getCapadCode()
{
    return null;
}

应替换为:

@Override
public String getCapadCode()
{
    return origin.getCapadCode();
}

是否有可能以某种方式使用sed或awk自动执行此过程?

3 个答案:

答案 0 :(得分:1)

你可以使用搜索和替换正则表达式,如下所示:

搜索: get(.*)\(\)\R\{\R return null;\R\}

取代: get$1\(\)\R\{\R return origin\.$1;\R\}

我使用Eclipse Find / Replace。

答案 1 :(得分:1)

这里有点perl:

perl -pe '
    m{public .* (.+)\(} and $methodName = $1; 
    s{(?<=return )null;}{origin.$methodName();};
' File.java

如果您对此感到满意,可以使用perl -i -pe进行调用以进行现场写入。

答案 2 :(得分:0)

使用风险自负:

$ awk '/^public/{name=$3} /return/{sub(/null/,"origin."name)} 1' file
@Override
public String getCapadCode()
{
    return origin.getCapadCode();
}