Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在awk脚本中,模式匹配后如何打印?_Awk - Fatal编程技术网

在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;
}

以下是另一种解决方案,使用: