como substituir o caminho de inclusão em um arquivo C com sed?

0

Digamos que eu tenha

#include <prog1/foo.h>
#include <prog1/bar.h>
#include <prog1/baz.h>

Eu tenho que substituí-lo por

#include <prog1/prog1/foo.h>
#include <prog1/prog1/bar.h>
#include <prog1/prog1/baz.h>

Eu só sei como encontrar a correspondência original, como:

sed -i -e '/#include\s<prog1\/.*\.h>/' testfile

Mas não tenho ideia de como colocar algo no meio da string

    
por M.Mass 01.06.2018 / 13:35

1 resposta

2

sed abordagem:

sed -E '/^#include/ s/<prog1/&\/prog1/' testfile

A saída:

#include <prog1/prog1/foo.h>
#include <prog1/prog1/bar.h>
#include <prog1/prog1/baz.h>
  • A opção -E é adicionada para casos mais estendidos. O simples atual funcionará mesmo sem ele.
por 01.06.2018 / 13:39