• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

(gelöst) Dateiendungen Filtern mit grep

Moin Zusammen!
Ich wollte mir ein Script schreiben, welches mir bestimmte Ausdrücke aus einer Datei herrausfiltert und dabei bestimmte Endungen unterdrückt.
Mein Ansatz:
Code:
grep ".mp3"  dateiliste
Nun meine Frage: Wie ist die Syntax für den Operator
Code:
${%.mp3}
,so dass ich eine Trackliste ohne Dateiendungen zur weiteren Verwendung bekomme?
 

regexer

Advanced Hacker
Ein Wort zur Vorsicht: Punkt steht sowohl im grep als auch im sed für "ein beliebiges Zeichen". Außerdem sollte man in diesem Fall nur nach dem String "mp3" am Zeilenende suchen. Deshalb:
Code:
grep "\.mp3$" dateiliste | sed 's/\.mp3$//'
oder gleich ganz in sed machen:
Code:
sed -n 's/\.mp3$//p' dateiliste
 
Woa ey!
Danke für die ausführlichen Ratschläge
Ich bin immer noch am Anfang meines BASH-tums und der Befehl sed ist mir noch nicht so geläufig. Nach einigem Nachdenken dachte ich mir, den falschen Operator genommen zu haben und kam auf folgende Lösung:
Code:
list=$(ls|grep ".mp3") 

echo -e ${list//.mp3/'\n'}


Du meinst damit wird der Punkt vor "mp3" nicht als Sonderzeichen interpretiert :!:

To do list: sed!
 

Gimpel

Guru
notoxp schrieb:
Ein Wort zur Vorsicht: Punkt steht sowohl im grep als auch im sed für "ein beliebiges Zeichen". Außerdem sollte man in diesem Fall nur nach dem String "mp3" am Zeilenende suchen. Deshalb:
Code:
grep "\.mp3$" dateiliste | sed 's/\.mp3$//'
Geht mit halbwegs aktuellem grep und sed auch prima ohne escape, aber sicher(er) ist es mit, das stimmt wohl.
 

regexer

Advanced Hacker
Lance_Blastoff schrieb:
Ich bin immer noch am Anfang meines BASH-tums
Macht nicht's. Jeder hat mal angefangen. ;) Dann bin ich so frei, und schlage zu deiner Lösung gleich noch etwas anderes vor...
Code:
list=$(ls|grep ".mp3") 

echo -e ${list//.mp3/'\n'}

Es geht auch ohne grep:
Code:
list=$(ls *.mp3)
Es geht eigentlich sogar ohne ls:
Code:
for dateiname in *.mp3
do
  echo ${dateiname} 
  # hier deine weitere Verarbeitung
done
 
Oben