Usando um arquivo para inserir variáveis no script csh

0
unix%:~/tmp$ cat tmp.txt 
z=0.016728
NH=5.7E20
Center for spectra: 2:00:14.906, +31:25:45.826

Eu gostaria que o valor de z fosse definido para uma variável chamada $redsh , o valor de NH fosse $abun e os valores para o centro fossem $xc e $yc respectivamente.

Como faço para fazer isso?

    
por J. Doe 31.05.2018 / 21:59

2 respostas

3

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.

    
por dessert 01.06.2018 / 09:00
1

Leia man csh;man grep;man cut;man awk;man tr e faça algo como

set redsh = "'grep -E '^z=' tmp.txt | cut -d= -f2'"
set abun = "'grep -E '^NH=' tmp.txt | cut -d= -f2'"
set xc = "'grep -E '^Center for spectra: ' tmp.txt | cut -d, -f1 | cut '-d ' -f4'"
set yc = "'grep -E '^Center for spectra: ' tmp.txt | cut -d, -f2 | tr -d ' ''"
    
por waltinator 01.06.2018 / 04:01