I have in my package.json file this line :
"version": "5.0.0",
And I want to replace 5.0.0 with another dynamic value. I tried like this :
sed -i "s%5.0.0%5.1.1%g" "package.json"
But is not good, because I don't know previous value that is 5.0.0. Should I write a regex here?
Change 5.6.7 to whatever you want. You can grep or find -exec to change many files at once.
sed -i -E 's/"version": "([0-9]+(\.[0-9]+)+)",/"version": "5.6.7",/' package.json
You could use a backreference:
sed -i -E 's/(^ *?"version". *)[0-9.]+(.*)/\1 5.1.1 \2/g''
The \1 guarantees that the string "version" formatted the same as the input, and you don't have to retype this.