首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ncks in for循环从几个netcdf文件中提取数据

使用ncks in for循环从几个netcdf文件中提取数据
EN

Stack Overflow用户
提问于 2019-02-07 10:16:25
回答 4查看 1.4K关注 0票数 1

我试图从netcdf文件中提取某些变量。如果将以下代码应用于单个文件,则以下代码可以工作:

代码语言:javascript
复制
ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 20091208000001.nc testU.nc

另见问题:Hyperslab of a 4D netcdf variable using ncks以获得解释。现在,我想在几个具有以下名称的.nc文件上使用此代码:

代码语言:javascript
复制
20091208000001.nc
20091208000002.nc
20091208000003.nc

我尝试了以下循环:

代码语言:javascript
复制
# !bin/bash
for ((x=1;x<=3;x+=1))
do
ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 2009120800000$x.nc testU.nc
done

我知道错误了

代码语言:javascript
复制
ncks: ERROR received 4 filenames; need no more than two

如何使循环一次只从一个文件中提取,然后将从所有文件中提取出来的输出附加到一个输出文件中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-02-07 15:42:33

我相信ni_u,234,235,1这个词被误认为是另一个文件名。在此之前,您还需要另一个-d

如果您正在处理多个nc文件,您可能需要重命名testU.nc,这样它们就不会重叠,或者可以使用ncrcat连接到一个文件中。例如。

代码语言:javascript
复制
ncrcat -C -F -d nj_u,151,152,1 -d ni_u,234,235,1 -v vel_u 2009120800000?.nc testU.nc
票数 2
EN

Stack Overflow用户

发布于 2019-02-07 10:23:02

我在您的脚本中看到了一些错误,但是没有什么可以导致您的实际错误。

  • 舍邦线不应该包含空间,路径应该是绝对的。
  • for条件中有一个逗号应该是分号 #!/bin/bash for ((x=1;x<=3;x+=1))做ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 2009120800000$x.nc testU.nc do

当我将echo添加到您想要运行的命令中时,我会得到以下结果:

代码语言:javascript
复制
ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 20091208000001.nc testU.nc
ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 20091208000002.nc testU.nc
ncks -C -F -d nj_u,151,152,1 ni_u,234,235,1 -v vel_u 20091208000003.nc testU.nc

三个调用,每个调用一个文件。密码起作用了。好像还有别的东西。你是在简化你的代码还是给我们看完整的代码?

票数 1
EN

Stack Overflow用户

发布于 2019-02-07 20:32:06

@Packard在这两方面都是正确的。此外,1的步长是默认的,因此不需要。因此

ncrcat -C -F -d nj_u,151,152 -d ni_u,234,235 -v vel_u 2009120800000${x}.nc testU${x}.nc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54571020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档