Bash 变量名扩展多重替换
我想知道如何用变量扩展替换多个模式Bash 变量名扩展多重替换,bash,glob,Bash,Glob,我想知道如何用变量扩展替换多个模式 VAR=A_B_C_D_E 我想要的结果是A_C_E不使用temp变量 RESULT_TMP=${VAR/_B/} RESULT=${RESULT_TMP/_D/} 我做了一些这样的试验: ${${VAR/_B/}/_D/} 没有任何成功 有什么想法吗?您可以在BASH字符串替换中使用此glob模式: s='A_B_C_D_E' echo "${s//_[BD]/}" A_C_E \uBD]将匹配\u B或\u D,/将进行全局替换 编辑:关于下列附
VAR=A_B_C_D_E
我想要的结果是A_C_E
不使用temp变量
RESULT_TMP=${VAR/_B/}
RESULT=${RESULT_TMP/_D/}
我做了一些这样的试验:
${${VAR/_B/}/_D/}
没有任何成功
有什么想法吗?您可以在BASH字符串替换中使用此glob模式:
s='A_B_C_D_E'
echo "${s//_[BD]/}"
A_C_E
\uBD]
将匹配\u B
或\u D
,/
将进行全局替换
编辑:关于下列附加问题: 但如果B和D是字符串:
A\u FOO\u C\u BAR\u E
在这种情况下,您可以使用extglob
:
shopt -s extglob
s=`A_FOO_C_BAR_E`
echo "${s//_@(FOO|BAR)/}"
A_C_E
可以在BASH字符串替换中使用此glob模式:
s='A_B_C_D_E'
echo "${s//_[BD]/}"
A_C_E
\uBD]
将匹配\u B
或\u D
,/
将进行全局替换
编辑:关于下列附加问题: 但如果B和D是字符串:
A\u FOO\u C\u BAR\u E
在这种情况下,您可以使用extglob
:
shopt -s extglob
s=`A_FOO_C_BAR_E`
echo "${s//_@(FOO|BAR)/}"
A_C_E
很好,但是如果B和D是字符串:A_FOO_C_BAR_EFine,但是如果B和D是字符串:A_FOO_C_BAR_E