以增量增加数值

Increasing Numerical Values by Increments

我有以下代码,如果可以应用 sed/awk 命令或类似命令来递增 select 以下数值字符串,我的生活会变得更加轻松:

wgrib2 gfsf_00.grib2 -s | egrep '(:SNOM:surface)' | wgrib2 -i gfsf_00.grib2 -grib gfsconvf_00.grib2

wgrib2 gfsf_03.grib2 -s | egrep '(:SNOM:surface)' | wgrib2 -i gfsf_03.grib2 -grib gfsconvf_03.grib2

wgrib2 gfsf_06.grib2 -s | egrep '(:SNOM:surface)' | wgrib2 -i gfsf_06.grib2 -grib gfsconvf_06.grib2

模型帧增加了三个,因此是 00、03 和 06 帧。由于各种天气模型每天处理数百帧,如果有办法将上面代码中的数字序列从 00、03 和 06 更改为(这将处理接下来的三个模型文件连续)、09、12 和 15。

下一个要处理的模型小时数是 18、21 和 24(您可能已经猜到了)..

感谢大家提前帮助我解决这个问题。

我把它放在一个答案中,因为评论太长了:

要在文件中更改它们,我要做的是编写 python 或 ruby 脚本以只读方式打开文件,然后在其中的每一行中搜索 gfsconvf_(\d\d).grib2 使用正则表达式匹配,其中 \d 匹配单个整数数字,括号 () 将其捕获在变量 $1 中,然后设置 new_num = ($1 + 3) % 24(即 mod 24所以它会在午夜滚动,假设这是你想要的),然后在必要时将 newNum 格式化为带有前导零的字符串,并将整个匹配替换为 gfsconvf_newNumAsString.grib2 并将该行写入新文件。然后,如有必要,可以重命名或删除旧文件,并为新文件指定原始文件的名称。最好将原始文件保留一段时间,以备检查或恢复时使用。在这一点上,我不确定需要替换什么的确切要求是什么,例如 gfsf_00.grib2 中的 00 可能也需要更新,并且时间滚动要求也没有说明。