2016-02-23 76 views
1

我在想如何用变量扩展替换多个模式。变量名称扩展多重替换

VAR=A_B_C_D_E 

结果我想是A_C_E不使用临时变量。

RESULT_TMP=${VAR/_B/} 
RESULT=${RESULT_TMP/_D/} 

我做了一些这样的试验:

${${VAR/_B/}/_D/} 

没有任何成功。

有什么想法?

回答

4

您可以在bash字符串替换使用glob模式:

s='A_B_C_D_E' 
echo "${s//_[BD]/}" 
A_C_E 

_[BD]将匹配_B_D//将做全局替换。


编辑:在附加问题:

但万一其中B和d都是字符串:A_FOO_C_BAR_E

您可以使用在这种情况下extglob

shopt -s extglob 

s=`A_FOO_C_BAR_E` 
echo "${s//[email protected](FOO|BAR)/}" 
A_C_E 
+0

很好,但是在B和D是字符串:A_FOO_C_BAR_E –

+1

是:)非常感谢 –