Il tuo problema principale è che stai cercando di usare /
come separatore, quando /
è anche un carattere che dovrai analizzare.
Dovrai utilizzare un separatore diverso, ad esempio un tubo. Abbina tutto e un /
, quindi utilizza \(
e \)
(gruppi di acquisizione) delimitando la parte che si desidera estrarre e utilizzare \1
, rendendo tale gruppo:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Potresti farlo funzionare senza gruppi di acquisizione:basta eliminare tutto fino all'ultimo /
:
echo "yourstring" | sed 's|.*/||'
Perché non usare basename
per questo? Ad esempio:
for file in *mp3; do basename "$file"; done