Replace a string in shell script using a variable Replace a string in shell script using a variable unix unix

Replace a string in shell script using a variable


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"

Transcript:

pax> export replace=987654321pax> echo X123456789X | sed "s/123456789/${replace}/"X987654321Xpax> _

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.


you can use the shell (bash/ksh).

$ var="12345678abc"$ replace="test"$ echo ${var//12345678/$replace}testabc


Not specific to the question, but for folks who need the same kind of functionality expanded for clarity from previous answers:

# create some variablesstr="someFileName.foo"find=".foo"replace=".bar"# notice the the str isn't prefixed with $#    this is just how this feature works :/result=${str//$find/$replace}echo $result    # result is: someFileName.barstr="someFileName.sally"find=".foo"replace=".bar"result=${str//$find/$replace}echo $result    # result is: someFileName.sally because ".foo" was not found