- 积分
- 5130
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-7-16
- 最后登录
- 1970-1-1
|
发表于 2018-12-14 15:36:29
|
显示全部楼层
方法都告诉你了,你去学一些简单的shell语言命令就行啊
举个简单的栗子:
数据文件在 /home/data 里面,文件个数是20个,但是每个文件有几百万行,要用shell外部循环调用ncl计算每个文件第一列数据的标准差,那么:
-----------------------------------------------------------------------------------
shell脚本:
export datadirectory='/home/data' #文件路径
declare -i numOFfile=20 #文件总数,用shell里面定义整型的来定义
#开始循环,for循环,while循环很多都可以用
for ((i=0;i<$numOFfile;i=i+1))
do
export fileNO=${i} #循环一次更新声明一次文件编号,方便NCL里面的getenv函数读取
ncl test.ncl
done
-----------------------------------------------------------------------------------
NCL脚本:
begin
filedirectory = getenv("datadirectory") ;调用文件目录
fs = systemfunc("ls "+filedirectory+"/*") ;列出文件
i = stringtoint(getenv("fileNO")) ;读文件号,转成整型
;读文件内容
ele = readAsciiTable(fs(i),numAsciiCol(fs(i)),"float",0)
;求第一列的标准差
stdvOFele0 = stddev(ele(:,0))
;输出标准差到屏幕
print(stdvOFele0)
end
-----------------------------------------------------------------------------------
没有运行过不保证能不能运行,但是思路大概是这样。你自己看一下相关的shell语言的规则就能明白了,后面就不会再回复了,现在工作繁忙,时间很少,见谅。 |
|