【问题标题】:Find and Replace value using SED使用 SED 查找和替换值
【发布时间】:2017-03-14 17:45:06
【问题描述】:

我有一个包含键值对的文件

properties.env

development_port=8080
development_type=tcp
staging_port=8081
development_type=http

我需要从 properties.env 中读取值并根据某些环境变量值将其替换到另一个文件中,比如说ENVIRONMENT=staging/development

config.yml

server:
  adminConnectors:
    -
      port: 18001
      type: http

config.yml的最终输出应该是ENVIRONMENT=staging

server:
      adminConnectors:
        -
          port: 8081
          type: http

我如何使用 sed 命令实现这一点?

【问题讨论】:

    标签: linux string bash sed


    【解决方案1】:

    由于属性文件看起来具有正确的语法,您可以直接获取它,然后替换整个端口行:

    source properties.env
    sed --in-place "s/port.*/port: $staging_port/" config.yml
    

    当然,这假设“端口”行在您的配置中只出现一次。

    【讨论】:

    • 尝试了您的命令,但它没有替换该值。最终输出port: $development_port
    • @DarkCoder 我搞砸了 sed 语法。现已更正。
    • 知道了,是因为缺少单引号和双引号。 sed -i '.backup' 's/port.*/port: '"$development_port"'/' config.yml。您能否编辑您的答案,以便我接受它
    • @DarkCoder 我已经编辑了答案。您的版本中的引号比实际需要的要多。
    猜你喜欢
    • 2020-06-24
    • 2020-08-05
    • 2021-10-06
    • 2019-11-29
    • 2018-10-01
    • 2017-11-11
    • 2015-01-04
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多