Med et filnavn i form af someletters_12345_moreleters.ext
vil jeg udtrække de 5 cifre og sætte dem ind i en variabel.
Så for at understrege pointen, har jeg et filnavn med x antal tegn, derefter en sekvens af fem cifre omgivet af en enkelt understregning på hver side og derefter et andet sæt af x antal tegn. Jeg ønsker at tage det 5-cifrede tal og sætte det ind i en variabel.
Jeg er meget interesseret i antallet af forskellige måder, hvorpå dette kan lade sig gøre.
Brug cut:
echo 'someletters_12345_moreleters.ext' | cut -d'_' -f 2
Mere generisk:
INPUT='someletters_12345_moreleters.ext'
SUBSTRING=$(echo $INPUT| cut -d'_' -f 2)
echo $SUBSTRING
Generisk løsning, hvor nummeret kan være hvor som helst i filnavnet, ved at bruge den første af disse sekvenser:
number=$(echo $filename | egrep -o '[[:digit:]]{5}' | head -n1)
En anden løsning til at udtrække præcis en del af en variabel:
number=${filename:offset:length}
Hvis dit filnavn altid har formatet stuff_digits_...
kan du bruge awk:
number=$(echo $filename | awk -F _ '{ print $2 }')
Endnu en anden løsning til at fjerne alt undtagen cifre, brug
number=$(echo $filename | tr -cd '[[:digit:]]')