![](/img/trans.png)
[英]find and replace string (regex) across multiple files in linux using sed
[英]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.