Shell脚本:替换文本

时间:2012-05-31 16:11:34

标签: shell sed replace

MACHINENAME = MACHINE1

替换: MACHINEDOTS =“'uname -n'” 至 MACHINEDOTS = “MACHINE1”

我尝试了以下sed cmd,

sed's / MACHINEDOTS =“'uname -n'”/ MACHINEDOTS =“'$ machineName'”/ g'tmp mv -f tmp路径

显示错误: sed:无效选项 - '“'

2 个答案:

答案 0 :(得分:1)

当我尝试在Mac OS X 10.7上运行您的示例时,我得到一个“未终止的替代模式”,因为您使用双引号“而不是单引号”或反引号`。

用单引号替换双引号并在tmp之后摆脱垃圾(你的意思是&& mv -f tmp path?),如下所示:

sed 's/MACHINEDOTS=''uname -n''/MACHINEDOTS="'$machineName'"/g' tmp 

有效,但我不能100%确定这是否是你想要的。

答案 1 :(得分:0)

  

sed's / MACHINEDOTS =“'uname -n'”/ MACHINEDOTS =“'$ machineName'”/ g'tmp mv -f tmp path

您的意思是评估uname -n吗?它需要在后面。 像这样:

$ sed 's/\(MACHINEDOTS="\)'`uname -n`'"/\1'$machineName'"/g'