Eu usaria sed
para substituir os valores do arquivo, adicionar set
e executar eval
em toda a coisa:
eval 'sed 's/z=/set redsh=/;s/NH=/abun=/;s/.*: \(.*\), \(.*\)/xc= yc=/' tmp.txt'
Exemplo de execução
% unset redsh abun xc yc
% cat tmp.txt
z=0.016728
NH=5.7E20
Center for spectra: 2:00:14.906, +31:25:45.826
% eval 'sed 's/z=/set redsh=/;s/NH=/abun=/;s/.*: \(.*\), \(.*\)/xc= yc=/' tmp.txt'
% set
abun 5.7E20
…
redsh 0.016728
…
xc 2:00:14.906
yc +31:25:45.826
Note, no entanto, que: Você não deve usar o shell C. Use o shell Bourne.