Logging c/c+;的sed模式中的换行符+;功能

Logging c/c+;的sed模式中的换行符+;功能,logging,replace,sed,str-replace,Logging,Replace,Sed,Str Replace,我想在给定文件夹下所有文件中所有函数的开头调用跟踪/日志函数。 例如, 来自 void getVal(int a) { return mArray[a]; } 至 void getVal(int a) {pr_debug(); return mArray[a]; } 因此,我尝试了以下方法,但没有成功。 查找soc-type f-exec sed-i's/)\n{\n/)\n{pr_debug()\n/g'{}\ 我寻找并尝试了其他方法,但没有成功 find soc -ex

我想在给定文件夹下所有文件中所有函数的开头调用跟踪/日志函数。 例如,

来自

void getVal(int a) 
{
   return mArray[a];
}

void getVal(int a) 
{pr_debug();
   return mArray[a];
}
因此,我尝试了以下方法,但没有成功。 查找soc-type f-exec sed-i's/)\n{\n/)\n{pr_debug()\n/g'{}\

我寻找并尝试了其他方法,但没有成功

find soc  -exec sed -i 's/)\
> {\
> /)\
> {pr_debug();\
> /g' {} \;


find soc -type f -exec sed -i "s/)\\`echo -e '\n\r'`{\\`echo -e '\n\r'`/)\\`echo -e '\n\r'`{pr_debug()\\`echo -e '\n\r'`/g" {} \;

有人能帮我吗?

你可以用这个
sed

sed 'N; s/)[ ]*\n{/&\npr_debug();/g'
(或)

说明:

N                  - will read next line and append
s/pattern/replace/ - normal substitution takes place
&                  - will replace with what exactly matched in pattern
编辑: “查找”命令:

find . -type f -exec sed -i '/(.*)[ ]*$/{N; s/)[ ]*\n[ ]*{/&\npr_debug();/g}' {} \;

非常感谢。它起了作用。但我不知道它是如何工作的:)我现在理解了你的命令。我只是检查了一下,它在所有事件中都没有被替换。一些地方它被替换了,其他地方它已经离开了。所以,我看到了问题所在。@BalamuruganA,如果你面临问题,请查看更新(另一个
sed
)。非常好。它工作得很好。谢谢。我更新了我使用的命令。
find . -type f -exec sed -i '/(.*)[ ]*$/{N; s/)[ ]*\n[ ]*{/&\npr_debug();/g}' {} \;