为什么sed在脚本中不能正常工作

时间:2014-08-13 06:12:14

标签: linux bash shell

嗨,我在postscript中有以下行

sed 's_$org_$repl_g' $i > $temp_file

在此$ org中表示要更改的名称,$ repl表示替换。我已经为两者做了回音,两者都是写的。 $ i代表文件名。当我回到下面

echo $(sed "s/$org/$repl_g" $i)

然后它也不会取代这个词。当我直接尝试使用终端时,如下所示

sed 's_Dilip_Agarwal_g' test.txt

然后通过替换原始输出来提供正确的输出。

任何身体都可以帮助我,在这里我错了。

由于

1 个答案:

答案 0 :(得分:2)

不要在其上使用命令替换。并使用双引号而不是单引号。单引号不会扩展参数。您还必须修复参数扩展。 _也是一个有效的参数字符,因此您需要使用大括号来隔离唯一可识别参数的字符。

sed "s_${org}_${repl}_g" "$i" > "$temp_file"

您也可以使用另一个不是参数字符的分隔符:

sed "s|$org|$repl|g" "$i" > "$temp_file"