Récupère la dernière partie de la chaîne après le trait d'union


10

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 123de foo-bar-123.

Réponses:


23

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"

l'expansion des paramètres du shell est la meilleure réponse. Un outil externe léger est cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@glennjackman - re: 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 ...? )
don_crissti

2
@don_crissti, en effet. On pourrait le faire rev <<< "$string" | cut -d- -f1 | rev, mais alors nous nous éloignons de la simplicité de l'extension param.
glenn jackman


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.