Eu não sei como forçar printf
a mudar o expoente. Vamos fazer isso manualmente: multiplique o coeficiente por 10 -2 e adicione 2 ao expoente.
n=1.20E20
m=2
IFS="E" read coeff exp <<<"$n"
new=$(printf "%.4fE%d\n" "$(echo "$coeff * 10^-($m)" | bc -l)" "$((exp+m))")
# => 0.0120E22
Podemos validar com:
$ printf "%e\n" "$new"
1.200000e+20