Find and Replace problem at Shell Script
Hello all! I am creating a shell script but i have a problem with 2 lines.
I want from the script, to search at a specific file and find one string that i put and replace it with something else.
For this action, i use sed command. Here is what i did and i will describe the problem better after the code.
So with the above code, i have the problem that is putting the $wanip at ExternalHostname and the 127.0.0.1 at the InternalHostname, but is not replacing the symbol *
So after executing the script i have the following result at the file:
I don't want the asterisk. Is there someone that knows what i have to write in order to have the correct result (Without the asterisk at the end) ?
Thank you in advance.
"*" in SED (and many other places) is a special character meaning "any number of instances" of the previous regular expression".
To use a literal "*", you need to escape it like so: "\*"
sed 's/old*/new/' ##replaces any occurence of "ol" plus any number of "d"s
sed 's/old\*/new/' ##replaces the string "old*"
As Pixellany said, the * is special and giving you problems. Additionally, your solution has another problem I think. If you run the script a second time, the lines won't look the same (they won't have the placeholder *, but an ip number). So the replacements may not do what you want in subsequent runs. I'm not a sed expert, but I tested this, and it should replace the entire line each time. That way you can use the script over and over.
Thanks for your advice but the script that i am writing is an "installer" so there is no need to run it second time.
Thank you for the answer. I tried before create this thread only "*", without \
Thanks for the help and your time :)
Have a good day and happy Holidays!
|All times are GMT -5. The time now is 08:26 PM.|