2016-06-09 60 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