Salut,
ich suche einen kurzen Befehl, um ein ".mp3" aus einem String zu entfernen, damit ich nur noch den nackten Titel übrig habe. Habe bei Google leider nicht wirklich etwas hilfreiches gefunden, könnt ihr mir mal evnetuell kurz helfen?
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Salut, ich suche einen kurzen Befehl, um ein ".mp3" aus einem String zu entfernen, damit ich nur noch den nackten Titel übrig habe. Habe bei Google leider nicht wirklich etwas hilfreiches gefunden, könnt ihr mir mal evnetuell kurz helfen? |
![]() Anmeldungsdatum: Beiträge: 695 Wohnort: Wesel, Nordrhein-Westfalen |
basename sollte dir weiterhelfen: NAME=$(basename "$FILENAME" .mp3) Es bleibt nur der nackte Titel ohne Verzeichnis und Erweiterung übrig. Gruß, Holger |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Danke, klappt wunderbar! |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Noch ein weiteres kleines Problemchen... "lalelu_xyz.mp3" Ich muss "_xyz" wegbekommen, gibt es dafür auch einen Befehl? Also es könnte aber auch "blubb_abcdefgh.mp3 dort stehen, dann müsste "_abcdefgh" weg. |
Maskottchen
![]() Anmeldungsdatum: Beiträge: 5653 Wohnort: Confoederatio Helvetica |
awk -F "[_.]" '{print $1"."$3}' Geht nicht, sobald nebst dem . vor der Dateiendung noch ein weiterer dazukommt, Fuchs |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Okay, also wenn ich jetzt folgendes habe: muh="lalala_xyzd.mp3" Was muss ich dann jetzt tun? |
Maskottchen
![]() Anmeldungsdatum: Beiträge: 5653 Wohnort: Confoederatio Helvetica |
muh= Und ja, das geht sicher schoener, man frage mich, (Wenn Du tonnenweise solche Strings hast, dann machst Du in awk Fuchs |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
fuchsfuchsfuchs hat geschrieben:
Danke, klappt soweit. fuchsfuchsfuchs hat geschrieben:
Nein, soviele Strings sind es dann doch nicht. So, dann steigern wir mal den Schwierigkeitsgrad: 😀 muh="blabla_xyz_abc_blubb.mp3" Jetzt soll "blubb" weg. Problem: Es gibt mehrere Unterstriche im String, wie löse ich das? |
Maskottchen
![]() Anmeldungsdatum: Beiträge: 5653 Wohnort: Confoederatio Helvetica |
#!/bin/sh Unschoen wie Sau, aber tut. Fuchs |
Anmeldungsdatum: Beiträge: 2420 |
ThunderWar hat geschrieben:
Vorausgesetzt, _blubb ist immer an dieser Stelle echo ${muh} | sed s/"\(.*\)_.*\.mp3"/"\1.mp3"/g
|
Maskottchen
![]() Anmeldungsdatum: Beiträge: 5653 Wohnort: Confoederatio Helvetica |
Ah, ich Hirsch, es sind ja immer .mp3, ${string%_*} ist dann der String bis zu vor dem letzten _, Aber funktionieren tut meins auf jeden Fall, sogar mit nicht-mp3s ☺ Fuchs |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Danke, jetzt klappts! ☺ |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Doch noch eine winzige Frage... Wie bekomme ich das hin, dass Unterstriche durch Leerzeichen ersetzt werden und von jedem Wort der Anfangsbuchstabe groß geschrieben wird? |
Maskottchen
![]() Anmeldungsdatum: Beiträge: 5653 Wohnort: Confoederatio Helvetica |
fuer die Unterstriche: sed mit s/_/" "/ muesste gehen. Grossbuchstaben: sed 's/\b./\u&/g' (wenn zwischen den Woertern ein Leerzeichen steht) Fuchs |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 278 Wohnort: Berlin |
Hm, also sed mit s/_/" "/ ersetzt bei mir nur den ersten Unterstrich, der Rest bleibt. Das mit den Großbuchstaben funktioniert bei mir gar nicht. Kannst dus mir eventuell mal an einem Beispiel zeigen? |