AlexanderM AlexanderM - 1 year ago 127
Linux Question

Replace version number in a string using sed

I have a bundle version set in a file, like this:

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

How can I sed the version number and swap it out with an incremented number?

First I'm attempting to grab the line itself, which is the third line in my bundle file.

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

Which does indeed grab the line. I found this snippet here on stack overflow:


Which i'd like to use on $BUILD, but it doesn't work. The expected output for me would be

$NUM = "1.08"

Then I'd like increment it to 1.09, rebuild the string and used
sed -i
to replace it.

Answer Source

It seems that the interesting line is always line 3. Then you can use this awk one-liner:

awk 'NR==3{gsub(/[^.0-9]+/,"");$0+=0.01;print}' file.js
  • This line focuses on line3, and take the version number, add 0.01 to it.
  • Assume that your version format is always x.xx. If it is not in this case, it is also possible to calculate the increment dynamically. like 0.01 or 0.00001 But extra implementation is required.
  • If you run it with your example file, it will give you 1.09