Lê dados de um arquivo em um script csh

1

Existe uma maneira de ler dados de um arquivo csv em um script Cshell?

Eu tenho um script pequeno, que chama outro script recursivamente com um conjunto de parâmetros. Eu quero ler este conjunto de parâmetros de um arquivo de dados. Como posso fazer isso? Estou tendo problemas para implementar isso usando o awk.

Meu arquivo de dados tem este formato:

ecc obliq precu
0.035765 23.778 302.46
0.034552 23.709 286.67
.
.

E este é o meu código:

set ecc = (0.035765 0.034552 0.033316 0.032062 0.030792 0.029511 0.028223 0.026935 0.025652 0.024384)
set obliq = (23.778 23.709 23.629 23.541 23.447 23.35 23.253 23.158 23.069 22.989)
set precu = (302.46 286.67 270.94 255.27 239.68 224.17 208.78 193.52 178.43 163.54)

@ i=1000
@ k=1

while ($i <= 1009)
    cd Run${i}
    Run${i}/run${i} $i $ecc[$k] $obliq[$k] $precu[$k] >&! xout &
    @ i= $i + 1
    @ k= $k + 1
end

Então, ao invés de configurar as variáveis como no código acima, eu quero ler as variáveis ecc, obliq e precu de um arquivo de dados. Como posso fazer isso? Muito obrigado antecipadamente.

    
por RRC 28.04.2015 / 20:11

1 resposta

2

Você pode fazer assim:

set file='foo.bar'
set ecc=('awk '{print $1}' "$file"')
set obliq=('awk '{print $2}' "$file"')
set precu=('awk '{print $3}' "$file"')
...

Você pode substituir a saída de comando em outro comando da seguinte forma: foo 'bar' , que é o mesmo que chamar foo com a saída de bar como argumentos.

awk pode ser usado para separar as colunas: print $1 obterá a primeira coluna na entrada, print $2 a segunda, etc. Certifique-se de usar aspas simples, para que as variáveis $ não sejam obtidas substituído.

    
por 28.04.2015 / 21:21