wie ersetzt man den Include-Pfad in einer C-Datei durch sed?

wie ersetzt man den Include-Pfad in einer C-Datei durch sed?

Angenommen, ich habe

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

Ich muss es ersetzen durch

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

Ich weiß nur, wie ich die ursprüngliche Entsprechung finde, etwa:

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

Habe aber keine Ahnung, wie ich etwas in die Mitte einer Schnur setzen soll

Antwort1

sedAnsatz:

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

Die Ausgabe:

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

  • -EFür komplexere Fälle wurde eine Option hinzugefügt. Die aktuelle einfache Version funktioniert auch ohne sie.

verwandte Informationen