Pri názve súboru v tvare someletters_12345_moreleters.ext
chcem extrahovať 5 číslic a vložiť ich do premennej.
Aby som to zdôraznil, mám názov súboru s x znakmi, potom postupnosť piatich číslic obklopenú jedným podčiarkovníkom na oboch stranách a potom ďalšiu sadu x znakov. Chcem zobrať päťmiestne číslo a vložiť ho do premennej.
Veľmi ma zaujíma, koľkými rôznymi spôsobmi sa to dá dosiahnuť.
Použite cut:
echo 'someletters_12345_moreleters.ext' | cut -d'_' -f 2
Všeobecnejšie:
INPUT='someletters_12345_moreleters.ext'
SUBSTRING=$(echo $INPUT| cut -d'_' -f 2)
echo $SUBSTRING
Všeobecné riešenie, kde číslo môže byť kdekoľvek v názve súboru, s použitím prvej z takýchto sekvencií:
number=$(echo $filename | egrep -o '[[:digit:]]{5}' | head -n1)
Ďalšie riešenie na získanie presnej časti premennej:
number=${filename:offset:length}
Ak má názov vášho súboru vždy formát stuff_digits_...
, môžete použiť awk:
number=$(echo $filename | awk -F _ '{ print $2 }')
Ešte jedno riešenie na odstránenie všetkého okrem číslic, použite
number=$(echo $filename | tr -cd '[[:digit:]]')