Regex 在bash脚本中拆分字符串

Regex 在bash脚本中拆分字符串,regex,bash,Regex,Bash,可能重复: 我有一堆名为test..out的文件,类似于test1.1024.out或test2.2.out。是否有某种方法可以使用正则表达式,如^test....(.*).out$解析出每个文件上的中间数字,然后才能访问组 for f in test*.out; do number=${f#test*.} number=${number%.*} echo $f has middle number $number done 或者(BASH for循环的较短版本): 或者(BASH

可能重复:

我有一堆名为
test..out
的文件,类似于
test1.1024.out
test2.2.out
。是否有某种方法可以使用正则表达式,如
^test....(.*).out$
解析出每个文件上的中间数字,然后才能访问组

for f in test*.out; do
  number=${f#test*.}
  number=${number%.*}
  echo $f has middle number $number
done
或者(BASH for循环的较短版本):

或者(BASH for循环的较短版本):


根据Bash的版本,这也可以工作:

 test=test1.1024.out
 if [[ $test =~ ^test[A-Za-z0-9]+\.([0-9]+)\.out$ ]]; then
      echo ${BASH_REMATCH[1]}
 fi

根据Bash的版本,这也可以工作:

 test=test1.1024.out
 if [[ $test =~ ^test[A-Za-z0-9]+\.([0-9]+)\.out$ ]]; then
      echo ${BASH_REMATCH[1]}
 fi
 test=test1.1024.out
 if [[ $test =~ ^test[A-Za-z0-9]+\.([0-9]+)\.out$ ]]; then
      echo ${BASH_REMATCH[1]}
 fi