¿Cómo reemplazar la ruta de inclusión en un archivo C con sed?

¿Cómo reemplazar la ruta de inclusión en un archivo C con sed?

decir que tengo

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

tengo que reemplazarlo con

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

Sólo sé cómo encontrar la coincidencia original, como:

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

Pero no tengo idea de cómo poner algo en medio de una cuerda.

Respuesta1

sedacercarse:

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

La salida:

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

  • -ESe agrega la opción para casos más extendidos. El sencillo actual funcionará incluso sin él.

información relacionada