echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'
echo "TestT100String" | grep -o '[0-9]\+'
La méthode que vous utilisez pour mettre les résultats dans un tableau dépend quelque peu de la façon dont les données réelles sont récupérées. Il n'y a pas assez d'informations dans votre question pour pouvoir bien vous guider. Cependant, voici une méthode :
index=0
while read -r line
do
array[index++]=$(echo "$line" | grep -o '[0-9]\+')
done < filename
Voici une autre méthode :
array=($(grep -o '[0-9]\+' filename))
Vous pouvez le faire uniquement en bash en utilisant le double crochet [[ ]]
opérateur de test, qui stocke les résultats dans un tableau appelé BASH_REMATCH
:
[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"