我有一堆 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
,以指示我们希望将其替换为第二个捕获组。
请注意,我们还将(.*)
单独括在括号内。