Você pode usar herestring <<<
para passar a string para grep:
newnum=$(grep -oE '[0-9]+' <<< "$key" | sort -rn | head -n 1)
Isso seria mais eficiente do que echo "$key" | grep
, o que criaria um processo extra.
Lembre-se de colocar suas variáveis entre aspas duplas para evitar divisão de palavras e globbing. Veja isto também.