我已经意识到,我可以在终端中使用命令 ncks 将我需要的变量(温度)从一个 .nc 文件传输到另一个具有相同结构的文件,但它具有当前数据(uo,vo)而不是温度。我的问题是,如何创建一个循环,从每个温度 .nc 文件中获取温度变量并将其传输到同一日期的海流数据?
我已经尝试创建下面的脚本,尽管因为我是编程初学者,我很清楚这可能是非常错误的,但这就是我想要的逻辑
for filei in $(ls *TEMP-MFSe3r1-MED-b20200901_re-sv01.00.nc) ; do
for filej in $(ls *RFVL-MFSe3r1-MED-b20200901_re-sv01.00.nc) ; do
ncks -v thetao $filei $filej
done
done
我编写的代码没有达到我想要的目的。虽然我希望代码获取每个 *TEMP netcdf 文件,从中获取温度变量并将其附加到等效的 RFVL 文件,但它所做的是运行循环太多次并尝试将该温度变量附加到所有*RFVL 文件。另外,我意识到我从未指定我的文件的名称,这是一个示例:
20130701_d-CMCC--RFVL-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc
20130701_d-CMCC--TEMP-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc
如果有人有更好的方法来建议,我基本上想要做的是从每个 *TEMP 文件,其中包括变量 thetao,潜在热量的变量,我想将该变量附加到等效变量(同一天) *RFVL 文件,以便创建包含温度和海流数据的 netcdf 文件列表(每种类型我有 60 个文件)
对于不完整的问题,我深表歉意,这是我第一次在堆栈溢出上发帖。
假设:
TEMP
文件都有一个匹配的 RVFL
文件RFVL / TEMP
文件对都具有相同的确切名称,除了 4 个字符的 RFVL
与 TEMP
ncks
调用是有效的,并且执行 OP 想要的操作(当提供匹配的 RVFL / TEMP
文件时)TEMP
文件都保证具有变量 thetao
的值;否则,OP 将需要提供有关如何确定是否以及如何处理 TEMP
文件是否 not 具有 thetao
thetao
条目附加到 RVFL
文件中;否则OP将需要提供更多关于如何确定是否以及如何处理已包含RVFL
条目的
thetao
总体设计:
TEMP
文件名列表TEMP
文件名并将 TEMP
替换为 RFVL
ncks
命令一个想法:
for src in *TEMP*.nc
do
tgt="${src//TEMP/RFVL}"
ncks -v thetao "${src}" "${tgt}"
done