2010-12-10 283 views
-1

我想用SED替換某些函數。 讓說,我有一些被命名的功能,用SED替換字符串

AAAABBBB()

,我需要改變成

CCCC(nBBBB)

%BBBB <這一點 - 這可能是任何第三方,但AAAA,CCCC,n是固定長度。

我如何使用SED做到這一點?甚至使用其他方法?

感謝

+2

我不明白你想要完全替換。你能舉一些例子嗎? – 2010-12-10 02:50:08

回答

2

這裏是一個快速:

echo "AAAABBBB()" | sed -e 's/AAAA\(.\+\)()/CCCC(n\1)/' 
CCCC(nBBBB) 

echo "AAAAFF()" | sed -e 's/AAAA\(.\+\)()/CCCC(n\1)/' 
CCCC(nFF) 

的想法很簡單:匹配AAAA字符串,然後捕獲了B的一個反向引用(1或更多的人) 。現在用幾個C和backref替換它。另一封信也一樣。

順便說一句,你最好用一些具體的例子。否則,我們可能不會按完全正確您想要的替換。

0
sed -r 's/^A+([^A]+)\(\)/CCCC(n\1)/' 
+0

抱歉,我忘了解釋B可以是任何字母以及.. – Todd 2010-12-10 02:53:22

+0

所以它可以是AAAAFWEF()或AAAAWGRSFWEF()或甚至AAAAEGRERGREGREGSADFE()等 – Todd 2010-12-10 02:54:34

0

你不給足夠的信息來做出一個非常有選擇性的模式(假設有功能,您要重命名),但如果你想重命名的一切那樣:

sed -e 's/^\(....\)\(.*\)()/\1(n\2)/' 

那在該行的開頭(AAAA)變成4個字符,隨後是任意長度的BBBB變成AAAA(nBBBB)。我不確定你希望從哪裏獲得CCCC?