![](/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.