繁体   English   中英

Unix / Linux在多个文件中查找和替换函数调用

[英]Unix/Linux find and replace function calls in multiple files

我有一堆C源代码文件,其中包含free(ptr)类的调用。 我想用myfree(ptr)替换所有这些。 我知道正则表达式(free)\\(.*\\)将与free匹配,但是如何仅替换free而不替换括号中的部分呢? 我试过了

find . -name '*.txt' |xargs perl -pi -e 's/(free)\(.*\)/(myfree)\(.*\)/g'

最后,用myfree(.*)代替了free(ptr) myfree(.*) ,而不是我想要的。 我觉得这是一个普遍的问题,但还没有发现。

尝试

find . -name '*.txt' |xargs perl -pi -e 's/(free)(\(.*\))/myfree$2/g'

我们将\\(.*\\)替换$2以表示我们希望将其替换为第二个捕获组。

请注意,我们还将\\(.*\\)括在方括号内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM