Sed 在图案后的第n行插入打印
我最初的要求是在每个函数的输入处插入一个打印。由于使用正则表达式非常困难,我找到了一个部分解决方案,为了实现同样的目的,我需要在函数名后插入printf。我假设它应该在函数名后一行。因此,无论我的函数定义(这里的模式是我的函数名)出现在哪里,打印都应该出现在该函数名之后的第二行(第一行可以是大括号。这就是我选择第二行的原因)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'
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;
}
哦,上帝,谢谢你,非常感谢你。这很好用。我从未想过,有人会提供如此复杂的问题答案。再一次谢谢你的一个问题——我需要编辑现有的文件。。也就是说,它应该替换原始文件,而不是将结果显示在屏幕上。否则,同样的方法是没有用的。问候杰森