使用unix

时间:2016-04-21 13:31:54

标签: unix dimensions netcdf nco

我有几千个.nc文件,每个文件都需要修剪以匹配另一组文件的大小(lat / lon)。我只想要70-90N的数据,但长文件包含全局数据。在longFile1.nc上运行ncdump会给出

    dimensions:
    altitude = 40
    dim = 55890;
    nv = 2;

在shortFile1.nc上运行ncdump给出

    dimensions:
    fakeDim14 = 8111;
    fakeDim15 = 1;

longFile1.nc需要减少,以便dim = 8111.每个文件的短文件维度长度都会发生变化。我知道我需要每个长文件的开头,但每次结束点都不同。

我可以用

修剪longFile1.nc
    ncks -C -d it,0,8010 -v lat,lon,instant_cloud_phase longFile1.nc -o trimmedLongFile1.nc

但我不知道如何为所有这些做这件事,特别是因为长度随着每个文件而变化。我还必须从指数0-8010开始,以保​​持正确的纬度范围。有没有办法从每个短文件中读取第一个维度,然后在上面的nco命令中为每个相应的长文件使用它?那个nco命令甚至是最好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用NCO过滤器ncdmnsz并将整个过程放在文件循环中:

for fl in `ls longFile*.nc`; do
   dmnsz=`ncdmnsz fakeDim14 $fl`
   ncks -F -d it,,$dmnsz -v ...
done

注意使用-F表示基于1的索引。