Existe-t-il une ligne de commande simple pour extraire la dernière partie d'une chaîne séparée par des tirets? Par exemple, je veux extraire 123
de foo-bar-123
.
10
Vous pouvez utiliser l' expansion des paramètres de Bash :
string="foo-bar-123" && printf "%s\n" "${string##*-}"
123
Si vous souhaitez utiliser un autre processus, avec Awk:
echo "foo-bar-123" | awk -F- '{print $NF}'
Ou, si vous préférez Sed:
echo "foo-bar-123" | sed 's/.*-//'
Un processus externe plus léger, comme le suggère Glenn Jackman, est cut
:
cut -d- -f3 <<< "$string"
cut
:cut -d- -f3 <<< "$string"
cut
; en effet mais seulement si le numéro du dernier champ est connu (car la question est un peu ambiguë: existe-t-il une simple ligne de commande pour extraire la dernière partie ...? )rev <<< "$string" | cut -d- -f1 | rev
, mais alors nous nous éloignons de la simplicité de l'extension param.la source
la source