簡體   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