我正在为具有很多方法的类实现Decorator
模式。我创建了这个Decorator
类,并且只放了应该在这里的所有方法。
现在我有一个2000行的班级,每个部分都像:
@Override
public String getCapadCode()
{
return null;
}
应替换为:
@Override
public String getCapadCode()
{
return origin.getCapadCode();
}
是否有可能以某种方式使用sed或awk自动执行此过程?
答案 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();
}