我已经意识到,我可以在我的终端中使用命令ncks将我需要的变量(温度)从一个.nc文件传输到另一个具有相同 struct 的文件,但它具有当前数据(uo,vo),而不是温度.我的问题是,我如何创建一个循环,从每个温度.nc文件中获取温度变量,并将其传输到相同日期的海流数据?

我已经try 创建以下脚本,虽然我是编程初学者,但我很清楚它可能是非常错误的,但这是我要追求的逻辑

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文件,但它所做的是运行循环太多次,并try 将该温度变量附加到所有*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

我想要循环的有问题的命令是:

ncks -v thetao *TEMP*.nc *RFVL*.nc

也就是说,它从*TEMP*.nc文件中获取thetao变量,并将其附加到*RFVL*.nc文件中,唯一的小问题是,在我执行此命令后,它会询问我:

ncks: 20130701_d-CMCC--RFVL-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc exists---'e'xit, 'o'verwrite (i.e., clobber existing file), or 'a'ppend (i.e., replace duplicate variables in, and add metadata and new variables to, existing file) (e/o/a)?

为了知道我希望如何继续,我的回答是:a,但我更愿意找到一种方法,也可以从命令本身自动执行,这样它就不会每次都问我. 只是为了澄清一下,我正在处理的两组文件的名称完全相同,只是中间的4个字母表示文件中存储的数据类型.

如果有人有更好的建议,我基本上想要做的是从每个*TEMP文件中,其中包括变量thetao,潜在热量的变量,我想将该变量附加到等效的(同一天)*RFVL文件,以便创建一个包含温度和海流数据的netcdf文件列表(我有每种类型的60个文件)

我对未完成的问题表示歉意,这是我第一次在堆栈溢出上发帖.

推荐答案

结论:

  • 每个TEMP文件都有一个匹配的RVFL文件
  • 每对匹配的RFVL / TEMP个文件都有相同的名称,除了4个字符的RFVLTEMP
  • 4个字符的RFVL / TEMP在一个文件名中只出现一次(即,我们不必担心像123_TEMP_TEMP_789.ncabc_RFVL_TEMP_xyz.nc这样的名称)
  • OP的示例ncks调用是有效的,并且执行OP希望它做的事情(如果提供了匹配的RVFL / TEMP个文件)
  • 保证每个TEMP文件都有一个变量thetao的值;否则,OP将需要提供有关如何确定以及如何处理TEMP文件not是否具有thetao的值的其他详细信息
  • 不必担心op运行此进程两次,从而将重复的thetao条目追加到RVFL文件;否则op将需要提供有关如何确定是否以及如何处理已经包含thetao条目的RVFL文件的更多详细信息

总体设计:

  • 获取包含TEMP个文件名的列表
  • 复制TEMP文件名并将TEMP替换为RFVL
  • 运行ncks命令

一种 idea 是:

for src in *TEMP*.nc
do
    tgt="${src/TEMP/RFVL}"
    ncks -v thetao "${src}" "${tgt}"
done

Linux相关问答推荐

在Bluez/Linux中,周期性与连续蓝牙设备发现的已知缺陷是什么?

Arch_prctl的用例是什么

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

Docker 守护进程安装在 ubuntu jenkins docker 容器代理权限被拒绝

如何使用正则表达式在 LINux 中查找具有不同结尾的多个文件?

Windows WSL 以上 Linux 中的 AF_UNIX 套接字无法绑定到 /mnt 文件:错误 95,不支持操作

如何用 Sed 替换 Match 后的 2 个连续行

使用 awk 将 csv 拆分为带有标题的多个文件

跨多台计算机管理用户配置文件

为什么 perf 不报告缓存未命中?

如何在 Ubuntu 上安装 chkconfig?

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

让 Tk 看起来像一个原生 Linux 应用程序

使用 Scp 时防止覆盖文件

在 Linux 上用 C 语言读写串口

Docker Bash 提示不显示 colored颜色 输出

使用sudo apt-get install build-essentials

将 jiffies 转换为毫秒

如何使用 bash 在文件中间添加一行文本?

linux perf:如何解释和查找热点