Shell - String von Variable abschneiden

Aus Laub-Home Wiki

Hier gehe ich darauf ein, wie man in Bash oder Shell Skripten Strings von Variablen abschneiden kann. Möchte man zum Beispiel mit ls Dateinamen auslesen und diese ohne Dateiendung zum weiteren Verarbeiten nutzen, kann man das durch Abschneiden des Dateisuffix machen. Hierzu verwendet man % oder #.

Beispiele

So kann man Zeichen oder Strings von hinten, bzw. rechts abschneiden:

VALUE=textpart.txt.dat
echo ${VALUE%.*}

#Ausgabe:
textpart.txt

So kann man den längst möglichen String von rechts entfernen:

VALUE=textpart.txt.dat.gz
echo ${VALUE%%.*}

# Ausgabe:
textpart

Beides umgedreht geht mit #. Möchte man also den kürzest möglichen String von links abschneiden:

VALUE="/path/filename.dat.txt"
echo ${VALUE#*/}

# Ausgabe:
path/filename.dat

# oder:
VALUE="/path/filename.dat.txt"
echo ${VALUE#*.}

#Ausgabe:
dat.txt

für den längsmöglichen String von links:

VALUE="/path/filename.dat.txt"
echo ${VALUE##*/}

# Ausgabe:
filename.dat.txt


# oder
VALUE="/path/filename.dat.txt"
echo ${VALUE##*.}

# Ausgabe:
txt