Используя файл к входным переменным в сценариях csh

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

Я хотел бы за значение z быть установленным на названную переменную $redsh, значение NH быть $abun, и значения для центра, чтобы быть $xc и $yc соответственно.

Как я иду о выполнении этого?

0
задан 31 May 2018 в 22:31

2 ответа

Я использовал бы sed для замены значений из файла добавить set и выполненный eval на целой вещи:

eval `sed 's/z=/set redsh=/;s/NH=/abun=/;s/.*: \(.*\), \(.*\)/xc=\1 yc=\2/' tmp.txt`

Пример выполняется

% 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=\1 yc=\2/' tmp.txt`
% set
abun    5.7E20
…
redsh   0.016728
…
xc      2:00:14.906
yc      +31:25:45.826

Обратите внимание однако что: Вы не должны использовать оболочку C. Используйте Оболочку Bourne.

3
ответ дан 29 October 2019 в 05:24

Читать man csh;man grep;man cut;man awk;man tr и сделайте что-то как

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 ' '`"
1
ответ дан 29 October 2019 в 05:24

Другие вопросы по тегам:

Похожие вопросы: