C ファイル内のインクルード パスを sed で置き換えるにはどうすればよいでしょうか?

C ファイル内のインクルード パスを sed で置き換えるにはどうすればよいでしょうか?

持っていると言う

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

それを置き換える必要があります

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

私が知っているのは、次のような元の一致を見つける方法だけです。

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

しかし、文字列の真ん中に何かを置く方法がわかりません

答え1

sedアプローチ:

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

出力:

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

  • -Eより拡張されたケースのためにオプションが追加されました。現在のシンプルなオプションは、それがなくても機能します。

関連情報