我有一大堆 C++ 源文件,我希望在其中插入一个简单的函数定义(大约 6 行)。该定义应立即出现在另一个函数定义之后。
使用这个问题的公认答案:sed match multiple lines 然后 append,我可以插入琐碎的函数定义,但我无法将其限定为适当类的成员。
测试代码:
void object::func1()
{
std::cout << "func1" << std::endl;
}
插入非成员函数:
james@scrapyard:~/Projects$ sed '/func1()$/,/^}/!b;/^}/a \\nint func2()\n{\n\ \ \ \ return 0;\n}' func1.cc
void object::func1()
{
std::cout << "func1" << std::endl;
}
int 1::func2()
{
return 0;
}
尝试对类名进行分组并使用下面的反向引用会导致1::func2
而不是object::func2
.
sed '/\([[:alnum:]]\+\)::func1()$/,/^}/!b;/^}/a \\nint \1::func2()\n{\n\ \ \ \ return 0;\n}' testcode.cc
如果我使用的是替代命令而不是附加命令,它会起作用,但是替代命令会被以下/,/
结果破坏:
sed: -e expression #1, char 33: unknown option to
s'`
sed可以吗?