我正在尝试使用参数扩展从字符串末尾删除一些数字,例如:
export ENV=dev12
echo ${ENV##[0-9]+}
但它不起作用,我在谷歌上找不到任何关于如何做到这一点的东西?有人知道吗?
答案 0 :(得分:1)
使用BASH正则表达式可以:
str='dev12'
[[ $str =~ ^(.*[^[:digit:]])[[:digit:]]+$ ]] && echo "${BASH_REMATCH[1]}"
dev
答案 1 :(得分:1)
参数扩展使用glob语法,而不是grep和其他工具使用的更规范的正则表达式语法。您还必须使用%%
,因为##
用于前缀。
对于您想要做的事情,没有相同的普通全局,但由于您使用bash
,您可以启用extglob并使用+([0-9])
:
shopt -s extglob
ENV=dev12
echo ${ENV%%+([0-9])}