Obtener la última parte de la cadena después del guión

¿Hay una línea de command simple para extraer la última parte de una cadena separada por guiones? Por ejemplo, quiero extraer 123 de foo-bar-123 .

Puedes usar la expansión de parameters de Bash:

 string="foo-bar-123" && printf "%s\n" "${string##*-}" 123 

Si quieres usar otro process, con Awk:

 echo "foo-bar-123" | awk -F- '{print $NF}' 

O, si prefieres Sed:

 echo "foo-bar-123" | sed 's/.*-//' 

Un process externo más ligero, como Glenn Jackman sugiere, se cut :

 cut -d- -f3 <<< "$string" 
 grep -Po '(?<=\w-)\w+(?=$|[\s.,])' 
 echo "foo-bar-123"| awk -F"-" '{print $3}'