开发者

Sed not working inside bash script

开发者 https://www.devze.com 2023-01-02 20:12 出处:网络
I believe this may be a simple question, but I\'ve looked everywhere and tried some workarounds, but I still haven\'t solved the problem.

I believe this may be a simple question, but I've looked everywhere and tried some workarounds, but I still haven't solved the problem.

Problem description: I have to replace a character inside a file and I can do it easily using the command lin开发者_开发技巧e:

sed -e 's/pattern1/pattern2/g' full_path_to_file/file

But when I use the same line inside a bash script I can't seem to be able to replace it, and I don't get an error message, just the file contents without the substitution.

#!/bin/sh

VAR1="patter1"
VAR2="patter2"

VAR3="full_path_to_file"

sed -e 's/${VAR1}/${VAR2}/g' ${VAR3}

Any help would be appreciated.

Thank you very much for your time.


Try

sed -e "s/${VAR1}/${VAR2}/g" ${VAR3}

Bash reference says:

The characters ‘$’ and ‘`’ retain their special meaning within double quotes

Thus it will be able to resolve your variables


I use a script like yours... and mine works as well!

#!/bin/sh

var1='pattern1'
var2='pattern2'

sed -i "s&$var1&$var2&g" *.html

See that, mine use "-i"... and the seperator character "&" I use is different as yours. The separator character "&" can be used any other character that DOES NOT HAVE AT PATTERN.

You can use:

sed -i "s#$var1#$var2#g" *.html

sed -i "s@$var1@$var2@g" *.html

...

If my pattern is: "test@email.com" of course you must use a seperator different like "#", "%"... ok?

0

精彩评论

暂无评论...
验证码 换一张
取 消