在bash中提取包含数字的路径的一部分

Mic*_*rey 9 regex bash awk

在 bash 中,给定一个路径,例如:

mypath='my/path/to/version/5e/is/7/here'
Run Code Online (Sandbox Code Playgroud)

我想提取包含数字的第一部分。例如,我想提取:5e

有没有比使用 while 循环遍历各个部分并检查每个部分的数字更好的方法?

while IFS=/ read part
do
   if [[ $part =~ *[0-9]* ]]; then
      echo "$part"
   fi
done <<< "$mypath"
Run Code Online (Sandbox Code Playgroud)

Jam*_*own 9

使用 Bash 的正则表达式:

[[ "$mypath" =~ [^/]*[0-9]+[^/]* ]] && echo "${BASH_REMATCH[0]}" 
5e
Run Code Online (Sandbox Code Playgroud)