0

私の最初の要件は、各関数のエントリに印刷を挿入することです。正規表現では非常に難しいため、部分的な解決策を見つけます。これを実現するには、関数名の後に printf を挿入する必要があります。関数名の1行後にあると思います。したがって、関数定義(ここではパターンは関数名です)が来るところはどこでも、その関数名の後の2行目に印刷が来るはずです(最初の行は中括弧である可能性があります。そのため、2行目を選択しました)

4

1 に答える 1

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;
}
于 2012-07-27T18:06:44.433 に答える