用SED替换字符串

问题描述:

我想用SED替换某些函数。 让说,我有一些被命名的功能,用SED替换字符串

AAAABBBB()

,我需要改变成

CCCC(nBBBB)

%BBBB <这一点 - 这可能是任何第三方,但AAAA,CCCC,n是固定长度。

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

感谢

+2

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

这里是一个快速:

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替换它。另一封信也一样。

顺便说一句,你最好用一些具体的例子。否则,我们可能不会按完全正确您想要的替换。

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

你不给足够的信息来做出一个非常有选择性的模式(假设有功能,您要重命名),但如果你想重命名的一切那样:

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

那在该行的开头(AAAA)变成4个字符,随后是任意长度的BBBB变成AAAA(nBBBB)。我不确定你希望从哪里获得CCCC?

sed 's/AAAA\([^(]*\)()/CCCC(n\1)/'