Use ${VAR%PATTERN}
para remover o sufixo correspondente ao último campo e, em seguida, ${NEWVAR##PATTERN}
para remover o prefixo correspondente a todos, exceto o último campo restante.
all_but_last_field=${mystring%.*}
second_to_last_field=${all_but_last_field##*.}
Você precisa armazenar a string em uma variável e armazenar o resultado intermediário em uma variável também, você não pode encadear diretamente as expansões (você pode em zsh, mas não em bash).