从 csh 脚本中的文件读取数据

从 csh 脚本中的文件读取数据

有没有办法将 csv 文件中的数据读取到 Cshell 脚本中?

我有一个小脚本,它使用一组参数递归调用另一个脚本。我想从数据文件中读取这组参数。我怎样才能做到这一点?我在使用 awk 实现这个时遇到问题。

我的数据文件是这种格式:

ecc obliq precu
0.035765 23.778 302.46
0.034552 23.709 286.67
.
.

这是我的代码:

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

因此,我不想像上面的代码那样设置变量,而是想从数据文件中读取变量 ecc、 obliq 和 precu 。我怎样才能这样做呢?非常感谢。

答案1

你可以这样做:

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

您可以将命令输出替换为另一个命令,如下所示: ,这与使用作为参数的输出foo `bar`进行调用相同。foobar

awk可用于分隔列:print $1将获取输入中的第一列、print $2第二列等。确保使用单引号,这样$变量就不会被替换。

相关内容