csh 스크립팅에서 파일을 사용하여 변수 입력

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.

이 작업을 수행하려면 어떻게 해야 합니까?

답변1

나는 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 쉘을 사용하십시오.

답변2

읽고 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 ' '`"

관련 정보