首页 > 解决方案 > 从第二个字符读取直到第一次出现分隔符

问题描述

这就是我的变量名的样子:p123456_19100210720_linux-86-64

我正在尝试123456使用变量扩展来获取变量。我能够p123456使用变量扩展并在 first 之前阅读所有内容_

patchname="p123456_19100210720_linux-86-64"
echo ${patchname%%*_}

这输出p123456. 有没有办法我只能得到123456

标签: bash

解决方案


使用正则表达式运算符会容易得多BASH

[[ $patchname =~ [0-9]+ ]] && echo "${BASH_REMATCH[0]}"

123456

使用替代解决方案extglob

shopt -s extglob
echo "${patchname//+([^0-9]|_*)/}"

123456

推荐阅读