2015-06-28 54 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也需要更新,而且時間延長需求也沒有說明。