我有abc.sh
:
exec $ROOT/Subsystem/xyz.sh
在Unix框中,如果我打印echo $HOME
,那么我会得到/HOME/COM/FILE
。
我想使用sed替换$ROOT
$HOME
。
预期产出:
exec /HOME/COM/FILE/Subsystem/xyz.sh
我试过,但我没有得到预期的输出:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
另外:
如果我有abc.sh
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
然后用
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
它只替换第一个$ROOT
,即输出为
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
答案 0 :(得分:97)
说:
sed "s|\$ROOT|${HOME}|" abc.sh
注意:
sed
扩展变量。/
的分隔符,因为替换内容包含/
$
,因为您不想逃避它。编辑:为了替换所有出现的$ROOT
,请说
sed "s|\$ROOT|${HOME}|g" abc.sh
答案 1 :(得分:21)
这可能对您有用:
sed 's|$ROOT|'"${HOME}"'|g' abc.sh > abc.sh.1
答案 2 :(得分:1)
This may also can help
input="inputtext"
output="outputtext"
sed "s/$input/${output}/" inputfile > outputfile