Archiv verlassen und diese Seite im Standarddesign anzeigen : Shellscript Dateiendung abschneiden
BerndDasBrot
16.03.07, 08:47
Hallo.
Wie kann ich wirksam eine Dateiendung abschneiden?
Prinzipielle geht das ja u.a. so:
test=$(echo $1 | sed -e "s/\....$//")
echo $test
Problem hierbei ist das es nur für Dateien funktioniert, wo die Endung 3 Zeichen lang ist.
Ich suche nun eine Möglichkeit eine Dateiendung abzuschneiden die quasi beliebig lang ist.
Jemand eine Idee oder gar was fertiges dafür?
tazdevil77
16.03.07, 09:55
wenn der suffix bekannt ist:
basename test.jpg .jpg
sonst:
test=$(echo $1 | sed -r -e 's/(.*)\.(.*)/\1/')
und hiermit bekommst du den suffix:
test=$(echo $1 | sed -r -e 's/(.*)\.(.*)/\2/')
BerndDasBrot
16.03.07, 10:11
Ja die Dateiendung ist nicht bekannt. Hatte ich vergessen zu erwähnen, aber ich dachte das wird klar indem ich sagte das die Dateiendung beliebig sein kann ;)
Wie auch immer. Das funktioniert einwandfrei.
test=$(echo $1 | sed -r -e 's/(.*)\.(.*)/\1/')
Vielen Dank.
tazdevil77
16.03.07, 10:20
natuerlich ;)
um mal klugzu*******en, du hattest geschrieben "beliebig lang" nicht "beliebig". :p
deswegen hatte ich auch noch basename angeboten.
test=$(echo $1 | sed -r -e 's/(.*)\.(.*)/\1/')
Achtung:
Google sagt, regexp in sed ist per default gierig - du machst damit also aus "Datei.lustiger.film.avi" ein "Datei".
tazdevil77
16.03.07, 12:50
das soll ja auch greedy sein, und aus "Datei.lustiger.film.avi" wird "Datei.lustiger.film". ;)
was du meinst ist "not greedy".
hmm wie wäre es mit
var="datei.foo.bar"
echo ${var%.*}
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.