Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

replace specific char of a string using sed using shell script

I have to replace a specific line of a file with some other value. for eg: I have a file with content as below:

request.timing=0/10 * * * * * ?

Now, I want to replace 10 (or to be specific, any value in that place) with a dynamic value. Eg, if I want to replace that with 20, the file should be updated as:

request.timing=0/20 * * * * * ?

Can someone help me? I am using sed as below:

sed -i "s/request.timing=0\/??/request.timing=0\/$poller"

where poller is dynamic value we pass.

like image 804
user05209 Avatar asked Nov 23 '25 17:11

user05209


1 Answers

First of all, you must check the characters the variable $poller has, because sed can interpret any character in there as a special one. Once you have checked that, use a sed separator which is not inside $poller. Let's suppose we can use /:

sed -r 's/(request.timing=0\/)[0-9]{2}/\1'"$poller"'/g'

How does it works

-r option activates extended regular expressions so you can use things like [0-9]{2}, and with ( ... ) you're capturing the string to use in the replacement site.

like image 178
whoan Avatar answered Nov 26 '25 13:11

whoan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!