如何用 sed 替换 C 文件中的包含路径?

如何用 sed 替换 C 文件中的包含路径?

说我有

#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为更多扩展案例添加了选项。即使没有它,当前的简单方法也能工作。

相关内容