我在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
但没有成功。请帮助
答案 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