echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'
echo "TestT100String" | grep -o '[0-9]\+'
Metoda, kterou použijete k vložení výsledků do pole, závisí poněkud na tom, jak jsou skutečná data načítána. Ve vaší otázce není dostatek informací, abychom vás mohli dobře nasměrovat. Zde je však jedna metoda:
index=0
while read -r line
do
array[index++]=$(echo "$line" | grep -o '[0-9]\+')
done < filename
Zde je další způsob:
array=($(grep -o '[0-9]\+' filename))
Můžete to udělat čistě v bash pomocí dvojité hranaté závorky [[ ]]
testovací operátor, který ukládá výsledky do pole nazvaného BASH_REMATCH
:
[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"