Sed命令删除部分字符串

时间:2013-08-30 09:09:30

标签: shell sed

我在txt文件中有值

  

cc.cis.jms.Simulator.CAAMS = CAAM270:CAAM050

现在我想将以下值替换为

  

cc.cis.jms.Simulator.CAAMS = CAAM270:CAAM050:CAAM250

我试过了:

SIMULATOR='CAAM270:CAAM050'
ADDEDCAAM="$SIMULATOR:CAAM250"
SACTUALVALUE='cc.cis.jms.Simulator.CAAMS='$SIMULATOR
SREPLACEVALUE='cc.cis.jms.Simulator.CAAMS='$ADDEDCAAM

sed -i 's|$SACTUALVALUE|$SREPLACEVALUE|g' $FILE >  /tmp/Bridger/CC_CISConfig.properties

CC_CISConfig.properties文件是在/ tmp / Bridger / path中创建的,但没有内容。

我也尝试过:

sed -i 's|$SACTUALVALUE|$SREPLACEVALUE|g' $FILE >  /tmp/Bridger/CC_CISConfig.properties.txt

但没有成功。请帮助

1 个答案:

答案 0 :(得分:3)

您必须使用"替换sed表达式中的bash变量值。

应该是,

sed -i "s|$SACTUALVALUE|$SREPLACEVALUE|g" $FILE >  /tmp/Bridger/CC_CISConfig.properties

然后,您正在使用-i选项。它将更改原始文件中的修改。 但是,您将STDOUT重定向到/tmp/Bridger/CC_CISConfig.properties。在这种情况下,无需写入文件。这就是为什么你得到空文件。

1)如果要创建新的更新文件,

sed "s|$SACTUALVALUE|$SREPLACEVALUE|g" $FILE >  /tmp/Bridger/CC_CISConfig.properties

2)如果你想在同一个(原始)文件中进行替换,

sed -i "s|$SACTUALVALUE|$SREPLACEVALUE|g" $FILE