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

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

Diga que eu tenho

#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 do barbante

Responder1

sedabordagem:

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>

  • -Ea opção é adicionada para casos mais estendidos. O simples atual funcionará mesmo sem ele.

informação relacionada