我有一堆名为test<numbers or letters>.<number>.out
的文件,如test1.1024.out
或test2.2.out
。有没有什么方法可以使用像^test.*?..(.*).out$
这样的正则表达式来解析每个文件的中间数字,然后才能访问该组?
答案 0 :(得分:2)
for f in test*.out; do
number=${f#test*.}
number=${number%.*}
echo $f has middle number $number
done
答案 1 :(得分:2)
sed -r 's/^test[[:alnum:]]*\.([[:digit:]]+)\.out$/\1/'
或者(BASH for循环的较短版本):
awk -F '.' '{print $2}'
答案 2 :(得分:2)
根据Bash的版本,这也可以起作用:
test=test1.1024.out
if [[ $test =~ ^test[A-Za-z0-9]+\.([0-9]+)\.out$ ]]; then
echo ${BASH_REMATCH[1]}
fi