Bir dosya adı someletters_12345_moreleters.ext
şeklinde verildiğinde, 5 rakamı çıkarmak ve bunları bir değişkene koymak istiyorum.
Bu noktayı vurgulamak için, x sayıda karakter içeren bir dosya adım var, ardından her iki tarafta tek bir alt çizgi ile çevrili beş basamaklı bir dizi ve ardından x sayıda karakterden oluşan başka bir dizi var. Bu 5 haneli sayıyı alıp bir değişkene yerleştirmek istiyorum.
Bunun gerçekleştirilebileceği çok sayıda farklı yolla çok ilgileniyorum.
cut]1 kullanın:
echo 'someletters_12345_moreleters.ext' | cut -d'_' -f 2
Daha jenerik:
INPUT='someletters_12345_moreleters.ext'
SUBSTRING=$(echo $INPUT| cut -d'_' -f 2)
echo $SUBSTRING
Numaranın dosya adında herhangi bir yerde olabileceği genel çözüm, bu tür dizilerin ilkini kullanır:
number=$(echo $filename | egrep -o '[[:digit:]]{5}' | head -n1)
Bir değişkenin tam olarak bir kısmını çıkarmak için başka bir çözüm:
number=${filename:offset:length}
Dosya adınız her zaman stuff_digits_...
biçimindeyse awk kullanabilirsiniz:
number=$(echo $filename | awk -F _ '{ print $2 }')
Rakamlar dışındaki her şeyi kaldırmak için başka bir çözüm
number=$(echo $filename | tr -cd '[[:digit:]]')