在awk脚本中,模式匹配后如何打印?
我的输入文件数据在awk脚本中,模式匹配后如何打印?,awk,Awk,我的输入文件数据 public class XXX { private String XX =""; @Override public void toString(){ } } awk/public void toString/{print nitin} 这样的输出 public class XXX{ private String XX =""; @Override nitin public void toString(){ } }
public class XXX
{
private String XX ="";
@Override
public void toString(){
}
}
awk/public void toString/{print nitin}
这样的输出
public class XXX{
private String XX ="";
@Override
nitin
public void toString(){
}
}
public class XXX{
private String XX ="";
nitin
@Override
public void toString(){
}
}
但是我想要
public class XXX{
private String XX ="";
@Override
nitin
public void toString(){
}
}
public class XXX{
private String XX ="";
nitin
@Override
public void toString(){
}
}
在模式匹配中,如果我使用@override,那么它将编辑@override的其他方法。
请建议我如何做到这一点。鉴于您的输入文件和所需的输出,这对我来说很有效:
/@Override/ {
override = 1;
override_string = $0; # @Override might be indented at various levels
next;
}
override && ! /public void toString/ {
print override_string;
print $0;
override = 0;
next;
}
override && /public void toString/ {
# Get indent
match($0, /^\s*/, matches);
indent = matches[0];
printf("%s%s\n", indent, "nitin");
print override_string;
print $0;
override = 0;
next;
}
{
print;
}
以下是另一种解决方案,使用: