【问题标题】:Sed command to remove part of a stringsed 命令删除字符串的一部分
【发布时间】:2013-08-30 17:34:32
【问题描述】:

我在 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/ 路径中创建,但上面没有内容。

我也试过了:

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

但没有成功。请帮忙

【问题讨论】:

标签: shell sed


【解决方案1】:

您必须使用 " 替换 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

【讨论】:

  • 如果此答案解决了您的问题,请将其标记为已接受。更多信息,click here
猜你喜欢
  • 2011-03-07
  • 2012-03-31
  • 2011-03-26
  • 2017-05-11
  • 2018-12-07
  • 1970-01-01
相关资源
最近更新 更多