2017-04-06 195 views
0
#include "calcmarks.h" 

// calcmarks, version 1, released Thu Mar 23 13:16:49 WST 2017 

int main(int argc, char *argv[]) 
{ 
    int nmarks = 0; 

    if(argc == 1) { 
     nmarks += readmarks(stdin); 

不關心這個代碼是什麼,我要的是更新和version.After做shell腳本一個shell腳本,註釋上面會成爲使用shell腳本來更新版本

// calcmarks ,版本2,發佈(時間你執行腳本)

試圖做下面哪個沒有工作。

a=$(date) 
sed -i "_bak" s'/Thu Mar 23 13:16:49 WST 2017/$a/g' "calcmarks.c" 
+0

你試圖自己解決這個問題? – Inian

+0

您是否調查過'sed -i'功能? –

+0

@Inian我知道如何使用sed -I's來使用它,我可以使用它將version1放置到version2以及時間,但是我希望每次執行腳本時都改變它。 – luven

回答

0

這裏是執行技巧的命令列表。 注意:如果您使用的是不同的版本編號系統(2.1,2.1.1等),則需要稍微更改它。

prev_version=$(sed -n '\%.*// calcmarks, version %!d;s///;s/ .*//p' "$file") 
new_version=$((prev_version+1)) 
curr_date=$(date "+%a %b %d %H:%M:%S %Z %Y") 
sed -i -e "s#\(// calcmarks, version \)${prev_version}.*#\1${new_version}, released ${curr_date}#g" "$file" 
+1

'grep | sed'是一個[無用的'grep'](http://www.iki.fi/era/unix/award.html#grep)。你想'prev_version = $(sed -n'\%。* // calcmarks,version%!d; s ///; s /。* // p'「$ file」)'等等。在只匹配一次的任何內容上都沒有'/ g'標誌,並正確引用文件名。 – tripleee