Tenho arquivos que contêm várias funções como abaixo.
arquivo1.c:
static void function1()
{
code
}
...
static void functionX()
{
code
}
...
static void lastFunction()
{
code
}
arquivo2.c:
static void function1()
{
code
}
...
static void functionX()
{
code is different from file1.c
}
...
static void lastFunction()
{
code
}
Neste caso, gostaria de encontrar e substituir apenas functionX() do arquivo1.c por functionX() do arquivo2.c e deixar o restante das funções como estão. As funções contêm o mesmo nome (“functionX”), mas o código dentro delas é diferente. Existe um comando de script de shell que pode fazer isso?
Isso pode ser o que você deseja, usando qualquer awk:
O acima armazena apenas a definição de
functionX()
fromfile2.c
na memória, o restante da entrada é processado uma linha por vez, portanto funcionará independentemente do tamanho dos arquivos de entrada.Com
perl
:Adicione a
-i
opção de editarfile1.c
i
n-lugares.