Respostas:
Você pode usar a expansão de parâmetros do Bash :
string="foo-bar-123" && printf "%s\n" "${string##*-}"
123
Se você deseja usar outro processo, com o Awk:
echo "foo-bar-123" | awk -F- '{print $NF}'
Ou, se você preferir Sed:
echo "foo-bar-123" | sed 's/.*-//'
Um processo externo mais leve, como sugere Glenn Jackman, é cut
:
cut -d- -f3 <<< "$string"
cut
; na verdade, mas apenas se o número do último campo é conhecido (como a questão é um pouco ambígua: ? Existe uma linha de comando simples para extrair a última parte ... )
rev <<< "$string" | cut -d- -f1 | rev
, mas então estamos desviar-nos a simplicidade de param.expansion.
cut
:cut -d- -f3 <<< "$string"