2012-07-27 47 views
0

我原来的要求是在每个函数的输入处插入一个打印。由于使用正则表达式非常困难,所以我找到了一个部分解决方案,为了实现这一点,我需要在我的函数名称后插入printf。我认为它应该是函数名称后的一行。因此,凡是我的函数定义(这里的模式是我的函数名称)来的时候,打印应该在第二行之后出现在函数名称后面(第一行可以是大括号,这就是为什么我选择第二行)在模式后在第n行插入打印

回答

0

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; 
} 
+0

哦,上帝,感谢ü,感谢ü非常多。这工作正常。我从来没有想过,任何人都会提供如此复杂的问题答案。再次感谢 – jaison 2012-08-05 13:20:21

+0

一个问题---我需要编辑现有文件..这不是将结果显示在屏幕上,而应该替换原始文件。否则,没有相同的用途。关心贾森 – jaison 2012-08-05 18:00:28