Использование файла для ввода переменных в 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
задан 1 June 2018 в 08:31

2 ответа

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

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

Пример run

% 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
ответ дан 20 July 2018 в 13:04

Прочитайте 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
ответ дан 20 July 2018 в 13:04

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

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