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
. /
. 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
.