我想知道如何用变量扩展替换多种模式。
VAR=A_B_C_D_E
Run Code Online (Sandbox Code Playgroud)
我想要的结果是A_C_E不使用临时变量。
RESULT_TMP=${VAR/_B/}
RESULT=${RESULT_TMP/_D/}
Run Code Online (Sandbox Code Playgroud)
我做了一些这样的尝试:
${${VAR/_B/}/_D/}
Run Code Online (Sandbox Code Playgroud)
没有任何成功。
任何想法?
您可以在 BASH 字符串替换中使用此 glob 模式:
s='A_B_C_D_E'
echo "${s//_[BD]/}"
A_C_E
Run Code Online (Sandbox Code Playgroud)
_[BD]将匹配_Bor_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
Run Code Online (Sandbox Code Playgroud)