C shell 스크립트를 짰습니다.. 어디가 틀렸는지 데이터값이 출력이 생각대로 안나옵니다.
글쓴이: mewestside / 작성시간: 화, 2013/10/15 - 10:20오전
C shell 스크립트를 짰습니다..
어디가 틀렸는지 데이터값이 출력이 생각대로 안나옵니다.
제가 생각하는 시나리오는
원하는 데이터에서 파일 내용을 받아서 1컬럼을 뽑아와서
1컬럼을 1라인에 5개의 데이터가 들어가게 만드는 것입니다.
데이터파일은 다음의 형식입니다.
0.0000 -0.0000 0.0500 0.1679 0.1000 0.3069 0.1500 0.3913 0.2000 0.4016 0.2500 0.3265 0.3000 0.1642 0.3500 -0.0767 0.4000 -0.3787 0.4500 -0.7161 0.5000 -1.0584 0.5500 -1.3725 0.6000 -1.6269 0.6500 -1.7941 0.7000 -1.8538 0.7500 -1.7952 0.8000 -1.6179 0.8500 -1.3321 0.9000 -0.9579 0.9500 -0.5234 1.0000 -0.0620 1.0500 0.3906 1.1000 0.8003 1.1500 1.1370 1.2000 1.3781 1.2500 1.5102 1.3000 1.5304 1.3500 1.4462 1.4000 1.2746 1.4500 1.0404 1.5000 0.7729 1.5500 0.5036 1.6000 0.2624
제가 짠 스크립트는
#!/bin/csh set file = `cat original.dat | awk '{if(NR==1) printf("%10.4lf ",$1); else if(NR%5==1) printf("%10.4lf ",$1);else if(NR%5==0) printf(" %10.4lf\n" ,$1);else printf("%10.4lf ",$1);}'` echo $file > test.dat
이렇게 짰는데..
제가 생각하는 결과는
0.0000 0.0500 0.1000 0.1500 0.2000 0.2500 0.3000 0.3500 0.4000 0.4500 0.5000
이런식의 결과인데..
다음줄로 안넘어가는군요...
원래 적용이 안되는건가요??
Forums:
결과물을 변수에 저장하면서 newline이
결과물을 변수에 저장하면서 newline이 space로 변환되기 때문인것 같군요.
csh에서 변수에 newline을 저장할 수 있는 방법은 모릅니다만,
아래와 같이 바로 파일로 저장하시면 원하시는 결과가 나올 것입니다.
또는 csh 대신 bash를 쓰시면 변수에 newline을 보존할 수 있습니다.
(주의: echo "$file" 의 큰따옴표를 빼먹으면 안 됨)
감사합니다...
csh 방법으로 해결했습니다...
bash 방법으로는 안되는군요...
bash 스크립트도 테스트해보고 올린 것입니다. 혹시
bash 스크립트도 테스트해보고 올린 것입니다.
혹시 csh 프롬프트에서 source 명령으로 bash 스크립트를 실행하신 것 아닌지요?
스크립트를 test.bash 에 저장했다면,
csh 프롬프트에서 아래와 같이 하거나
$ chmod 755 test.bash
$ ./test.bash
아래와 같이 하면 잘 동작할 것입니다.
$ bash test.bash
아.. 제가 방법을 잘못 알고 있었습니다..ㅠ
감사합니다..
제가 아직 많은것을 알지 못하여 생긴 문제였습니다..
새로운 방법을 알고 많이 배웠습니다..
감사합니다..
댓글 달기