【问题标题】:Shell Script: Replace textShell 脚本:替换文本
【发布时间】:2012-05-31 16:11:33
【问题描述】:

机器名=机器1

替换: MACHINEDOTS="'uname -n'" 至 MACHINEDOTS="machine1"

我尝试了以下 sed cmd,

sed 's/MACHINEDOTS="'uname -n'"/MACHINEDOTS="'$machineName'"/g' tmp mv -f 临时路径

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

【问题讨论】:

    标签: shell sed replace


    【解决方案1】:

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

    用单引号替换双引号并在 tmp 之后摆脱垃圾(您的意思是 && mv -f tmp path 吗?)像这样:

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

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

    【讨论】:

      【解决方案2】:

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

      您的意思是评估uname -n?它将需要在反引号中。 像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-14
        • 2011-12-07
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        相关资源
        最近更新 更多