1
我在想如何用变量扩展替换多个模式。变量名称扩展多重替换
VAR=A_B_C_D_E
结果我想是A_C_E
不使用临时变量。
RESULT_TMP=${VAR/_B/}
RESULT=${RESULT_TMP/_D/}
我做了一些这样的试验:
${${VAR/_B/}/_D/}
没有任何成功。
有什么想法?
我在想如何用变量扩展替换多个模式。变量名称扩展多重替换
VAR=A_B_C_D_E
结果我想是A_C_E
不使用临时变量。
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
_[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
很好,但是在B和D是字符串:A_FOO_C_BAR_E –
是:)非常感谢 –