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



我有一堆 C 源代码文件,调用类似free(ptr).我想用myfree(ptr)替换所有这些.我知道正则表达式(free)(.*)会匹配free,但是如何仅替换free而不是括号中的部分?我尝试过 的变体

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

那个最终用myfree(.*)代替free(ptr),而不是我想要的。我觉得这是一个常见的问题,但什么也没找到。

尝试

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

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

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

最新更新