GPiter
GPiter

Reputation: 809

Replace a string using bash file

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

Answers (2)

user1934428
user1934428

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

mono1
mono1

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

Related Questions