echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'
echo "TestT100String" | grep -o '[0-9]\+'
Il metodo utilizzato per inserire i risultati in un array dipende in qualche modo da come vengono recuperati i dati effettivi. Non ci sono abbastanza informazioni nella tua domanda per poterti guidare bene. Tuttavia, ecco un metodo:
index=0
while read -r line
do
array[index++]=$(echo "$line" | grep -o '[0-9]\+')
done < filename
Ecco un altro modo:
array=($(grep -o '[0-9]\+' filename))
Puoi farlo esclusivamente in bash usando la doppia parentesi quadra [[ ]]
operatore di test, che memorizza i risultati in un array chiamato BASH_REMATCH
:
[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"