我想知道如何用变量扩展替换多个模式。
VAR=A_B_C_D_E
我想要的结果是A_C_E
而不使用临时变量。
RESULT_TMP=${VAR/_B/}
RESULT=${RESULT_TMP/_D/}
我做了一些这样的试验:
${${VAR/_B/}/_D/}
没有任何成功。
有什么想法吗?
答案 0 :(得分: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//_@(FOO|BAR)/}"
A_C_E