Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Sed 在图案后的第n行插入打印_Sed - Fatal编程技术网

Sed 在图案后的第n行插入打印

Sed 在图案后的第n行插入打印,sed,Sed,我最初的要求是在每个函数的输入处插入一个打印。由于使用正则表达式非常困难,我找到了一个部分解决方案,为了实现同样的目的,我需要在函数名后插入printf。我假设它应该在函数名后一行。因此,无论我的函数定义(这里的模式是我的函数名)出现在哪里,打印都应该出现在该函数名之后的第二行(第一行可以是大括号。这就是我选择第二行的原因)1打印每一行 awk -v fn=main '$2==fn{f=1} f{s++} s==3{print " printf(\"%i\", 10);"; s=f=0} 1'

我最初的要求是在每个函数的输入处插入一个打印。由于使用正则表达式非常困难,我找到了一个部分解决方案,为了实现同样的目的,我需要在函数名后插入printf。我假设它应该在函数名后一行。因此,无论我的函数定义(这里的模式是我的函数名)出现在哪里,打印都应该出现在该函数名之后的第二行(第一行可以是大括号。这就是我选择第二行的原因)

1
打印每一行

awk -v fn=main '$2==fn{f=1} f{s++} s==3{print "  printf(\"%i\", 10);"; s=f=0} 1' foo.txt
foo.txt

int main 
{
  return 0;
}
int main 
{
  printf("%i", 10);
  return 0;
}
输出

int main 
{
  return 0;
}
int main 
{
  printf("%i", 10);
  return 0;
}

哦,上帝,谢谢你,非常感谢你。这很好用。我从未想过,有人会提供如此复杂的问题答案。再一次谢谢你的一个问题——我需要编辑现有的文件。。也就是说,它应该替换原始文件,而不是将结果显示在屏幕上。否则,同样的方法是没有用的。问候杰森