2017-09-15 61 views
0

複雜的C-可變我需要在噸的C文件與替換文件

scratchBuffer0_U32 

更換一堆

&p_Data->scratchBuffer0_U32[ 0 ] 

在目錄及其子目錄。

此外,一些開發商寫的[0] [0],[0]

回答

0

如果使用* nix中,你試圖取代在多個文件中的字符串,看看這個answer here這表明你如何用find和perl做遞歸替換。

根據括號之間的差異,您必須針對所有4種情況 - [0],[0],[0]和[0]運行它。

1

這將是工作:

find your_directory -name "*.c" | xargs sed -i 's/&\(p_Data->scratchBuffer0_U32\)[^]]*]/\1/g' 
+1

哪裏輸出去這個CMD?使用'-i'參數(假設它是可用的)是可能的答案,但在O.P.測試意外後果之前也是有風險的;-)。祝你們好運。 – shellter

+0

@shellter謝謝,我忘了添加'-i'參數。我已經更新了我的答案。 :) – paul

+0

我試過了,它重命名了許多其他變量。 – electro

0

隨着GNU的sed的-i爲僞就地編輯:

find . -type f -exec sed -i 's/&p_Data->scratchBuffer0_U32\[[[:space:]]*0[[:space:]]*\]/scratchBuffer0_U32/g' {} +