echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'
echo "TestT100String" | grep -o '[0-9]\+'
El método que utiliza para poner los resultados en una matriz depende en cierta medida de cómo se recuperan los datos reales. No hay suficiente información en tu pregunta para poder guiarte bien. Sin embargo, aquí hay un método:
index=0
while read -r line
do
array[index++]=$(echo "$line" | grep -o '[0-9]\+')
done < filename
Aquí hay otra forma:
array=($(grep -o '[0-9]\+' filename))
Podrías hacer esto puramente en bash usando el corchete doble [[ ]]
operador de prueba, que almacena los resultados en una matriz llamada BASH_REMATCH
:
[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"