使用 sed 替换字符串中的版本号

Uni*_*dev 5 linux sed

我在文件中设置了一个捆绑版本,如下所示:

"dist/app-build-v1.08": {
Run Code Online (Sandbox Code Playgroud)

我怎样才能 sed 版本号并用递增的数字替换它?

首先,我试图获取行本身,这是我的包文件中的第三行。

BUILD=$(sed '3q;d' ./build/bundles.js)
Run Code Online (Sandbox Code Playgroud)

这确实抓住了这条线。我在堆栈溢出时在这里找到了这个片段:

's/[^0-9.]*\([0-9.]*\).*/\1/'
Run Code Online (Sandbox Code Playgroud)

我想在 $BUILD 上使用它,但它不起作用。我的预期输出是

$NUM = "1.08"
Run Code Online (Sandbox Code Playgroud)

然后我想将它增加到 1.09,重建字符串并用来sed -i替换它。

Ken*_*ent 1

看起来有趣的行总是第 3 行。然后你可以使用这个 awk 单行:

awk 'NR==3{gsub(/[^.0-9]+/,"");$0+=0.01;print}' file.js
Run Code Online (Sandbox Code Playgroud)
  • 这一行重点关注第3行,并获取版本号,添加0.01到其中。
  • 假设您的版本格式始终为x.xx. 如果不是这种情况,也可以动态计算增量。但0.01 or 0.00001需要额外的实施。
  • 如果您使用示例文件运行它,它会给您1.09