echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'
echo "TestT100String" | grep -o '[0-9]\+'
Metode yang Anda gunakan untuk memasukkan hasil ke dalam array agak bergantung pada bagaimana data sebenarnya diambil. Tidak ada cukup informasi dalam pertanyaan Anda untuk dapat memandu Anda dengan baik. Namun, berikut ini salah satu metodenya:
index=0
while read -r line
do
array[index++]=$(echo "$line" | grep -o '[0-9]\+')
done < filename
Inilah cara lain:
array=($(grep -o '[0-9]\+' filename))
Anda bisa melakukan ini murni di bash menggunakan tanda kurung siku ganda [[ ]]
test operator, yang menyimpan hasil dalam array yang disebut BASH_REMATCH
:
[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"