Utiliser sed et regex pour capturer la dernière partie de l’url

J’essaie de faire en sorte que sed corresponde à la dernière partie d’une URL et ne produise que cela. Par exemple:

echo "http://randomurl/suburl/file.mp3" | sed (expression)

devrait donner la sortie:

file.mp3

Jusqu’à présent, j’ai essayé sed 's|\([^/]+mp3\)$|\1|g' mais il ne fait que reproduire l’url entier. Peut-être y a-t-il quelque chose que je ne vois pas ici, mais de toute façon, l’aide serait très appréciée!

cela marche:

  echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##' 

basename est votre bon ami.

 > basename "http://randomurl/suburl/file.mp3" => file.mp3 

Cela devrait faire le travail:

 $ echo "http://randomurl/suburl/file.mp3" | sed -r 's|.*/(.*)$|\1|' file.mp3 

où:

  • | a été utilisé à la place de / pour séparer les arguments de la commande s .
  • Tout est assorti et remplacé par tout ce qui est trouvé après le dernier / .

Edit: Vous pouvez également utiliser les fonctionnalités de substitution des parameters bash:

 $ url="http://randomurl/suburl/file.mp3" $ echo ${url##*/} file.mp3 
 echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$' 

Voici une autre solution utilisant grep .