Votre principal problème est que vous essayez d'utiliser /
comme séparateur, quand /
est également un caractère que vous allez analyser.
Vous devrez utiliser un séparateur différent, comme un tuyau. Faites correspondre tout et un /
, puis utilisez \(
et \)
(groupes de capture) délimitant la partie que vous souhaitez extraire, et utilisez \1
, rendant ce groupe :
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Vous pouvez le faire fonctionner sans groupes de capture :il suffit de tout laisser tomber jusqu'au dernier /
:
echo "yourstring" | sed 's|.*/||'
Pourquoi ne pas utiliser basename
pour ça? Par exemple :
for file in *mp3; do basename "$file"; done