Váš hlavní problém je, že se pokoušíte použít /
jako oddělovač, když /
je to také postava, kterou budete analyzovat.
Budete muset použít jiný oddělovač, například trubku. Spojte vše a /
a poté použijte \(
a \)
(skupiny zachycení) ohraničující část, kterou chcete extrahovat, a použijte \1
, čímž se skupina vykreslí:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Možná to bude fungovat bez zachycovacích skupin:stačí vypustit vše až do posledních /
:
echo "yourstring" | sed 's|.*/||'
Proč nepoužít basename
pro tohle? Například:
for file in *mp3; do basename "$file"; done