按增量增加数值

时间:2015-06-28 20:09:39

标签: bash shell awk sed increment

我有以下代码,如果可以应用sed / awk命令或类似的东西来增加下面数字值的选择字符串,我的生活将变得非常容易:

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

模型帧增​​加3,因此00,03和06帧。由于各种天气模型每天处理数百个帧,如果有一种方法可以改变上面代码中00,03和06的数字序列,将会非常感激(这将处理接下来的三个模型文件连续),09,12和15.

下一个要处理的模型时间是18,21和24(正如您可能已经猜到的那样)..

感谢所有帮助我提前帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

我正在回答这个问题,因为评论的时间太长了:

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