i am using the below code for replacing a string inside a shell script.
echo $LINE|sed -e 's/12345678/"$replace"/g'
but its getting replaced with $replace instead of the value of that variable.
could anybody tell what went wrong.
i am using the below code for replacing a string inside a shell script.
echo $LINE|sed -e 's/12345678/"$replace"/g'
but its getting replaced with $replace instead of the value of that variable.
could anybody tell what went wrong.
If you want to interpret $replace
, you should not use single quotes since they prevent variable substitution.
Try:
echo $LINE | sed -e "s/12345678/\"${replace}\"/g"
assuming you want the quotes put in. If you don't want the quotes, use:
echo $LINE | sed -e "s/12345678/${replace}/g"
Transcript:
pax> export replace=987654321
pax> echo X123456789X | sed "s/123456789/${replace}/"
X987654321X
pax> _
Just be careful to ensure that ${replace}
doesn't have any characters of significance to sed
(like /
for instance) since it will cause confusion unless escaped. But if, as you say, you're replacing one number with another, that shouldn't be a problem.
echo $LINE | sed -e 's/12345678/'$replace'/g'
you can still use single quotes, but you have to "open" them when you want the variable expanded at the right place. otherwise the string is taken "literally" (as @paxdiablo correctly stated, his answer is correct as well)
you can use the shell (bash/ksh).
$ var="12345678abc"
$ replace="test"
$ echo ${var//12345678/$replace}
testabc