pipe output of grep to sed?

Is there a way I can do this:

search for text and replace line containing matched text with a different line?
For example:

"I want to replace text"

I want to search for replace and then change the line to

I am perplexed.

Hope that makes sense.

Thanks in advance.

You can try this:

grep replace | sed 's/replace/perpleaxed/g'

Or you want to relpace line then;
grep replace | sed 's/I want to replace text/I am perplexed/g'

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"

Let me be more specific here:

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.

Can anybody please help?

please put a backlash "\" before special characters

sed 's/\*/\@/g'

replaces * with @