Shell - String von Variable abschneiden
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