You don't need to use grep at all. sed would be enough.
# Replace the whole line with a new one
sed -e "s/.*old_string.*/new_string/"
# Replace the chosen string with a new one
sed -e "s/old_string/new_string/"
# Replace every occurance of the chosen string with a new one
sed -e "s/old_string/new_string/g"
I have two variables in a shell script that I assign by reading contents of a file
The contents are as such
a="$var1=xyz"
b="$var1=abc"
I need to search a second file for occurences of $var1=xyz and replace it with
$var1=abc
I have used sed -s 's/'"$a"'/'"$b"'/g' which works fine but whenever the contents of variable a contain some special characters for example a="$var1=fdh&%4"
the replace is not working. If I change the value to just a="$var1=", the above sed works successfully to replace $var1= in the file to $var1=abc.