2015-06-28 56 views
0
提高了数值

我有下面的代码,我的生活会作出显著容易,如果一个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 

模型帧增加三个,因此00,03和06帧。由于各种天气模式每天处理数百帧,因此如果有办法将上述代码中00,03和06的数字序列更改为(并且这将处理接下来的三个在继承模型文件),09,12,和15

下一个模型小时才能处理是18,21,和24(正如你可能已经猜到了)..

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

+0

你确定这个问题与Python编程语言有关吗? –

+0

@gragas - 我在前面提到的一个有点相关的问题中知道,python中提供了一个解决方案。 – hallettwx

+0

Bash有循环(http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html)和函数(http://tldp.org/LDP/abs/html/complexfunct.html)。我觉得加入python只会让事情变得复杂得多,他们应该是这样的 – NightShadeQueen

回答

1

我把这个在回答中,因为它是一个评论太长:

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