Reputation: 809
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?
Upvotes: 1
Views: 122
Reputation: 22366
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.
Upvotes: 1
Reputation: 68
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
Upvotes: 2