2016-06-09 59 views
3

我有一個捆綁的版本在文件中設置,如下所示:使用替換字符串中的版本號SED

"dist/app-build-v1.08": { 

我怎樣才能sed的版本號,並用遞增的數字掉出來?

首先,我試圖抓住行本身,這是我的包文件中的第三行。

BUILD=$(sed '3q;d' ./build/bundles.js) 

確實抓住了線。我發現這個片段堆棧溢出:

's/[^0-9.]*\([0-9.]*\).*/\1/' 

我想使用$ BUILD,但它不起作用。對我來說,預計產量將

$NUM = "1.08" 

那麼我想它遞增到1.09,重建串並用於sed -i來取代它。

回答

1

看來,有趣的線總是線3。然後你可以使用這個AWK一行代碼:

awk 'NR==3{gsub(/[^.0-9]+/,"");$0+=0.01;print}' file.js 
  • 此行的重點是3號線,並採取版本號,添加0.01它。
  • 假設您的版本格式始終爲x.xx。如果不是這種情況,也可以動態計算增量。像0.01 or 0.00001但需要額外的實施。
  • 如果你與你的示例文件運行它,它會給你1.09
+0

巨大的,謝謝! –

0

另一種方式:

sed -r '3s/.*build-v([0-9]+(\.[0-9]+)?).*/\1+0.01/' | bc -q 

例子:

$ echo '"dist/app-build-v1.08": {' | sed -r 's/.*build-v([0-9]+(\.[0-9]+)?).*/\1+0.01/' | bc -q 
1.09