【问题标题】:bash sed replace text in between two special charactersbash sed 替换两个特殊字符之间的文本
【发布时间】:2020-04-08 19:09:22
【问题描述】:

我正在尝试创建一个需要在两行替换变量的作业:

hosts: all-qa1:&load_balanced_servers
hosts: all-qa1:!load_balanced_servers

我只需要替换- 之后和: 之前的所有内容。

它将被替换为qaqa1qa2、staging、production 等字符串。

【问题讨论】:

  • 需要更多信息,预期输出?
  • 所以作业将接受一个变量将替换中间的任何内容 - 和:在这种情况下 REPLACE=qa1 但 REPLACE 会不断变化
  • 换成什么字符串?
  • 这两个特殊字符“-REPLACE:”之间的任何内容在此示例中为 -qa1:
  • 最后一个命令完美运行! @anubhava 你能发布这个问题的答案吗?非常感谢楼主!

标签: bash sed


【解决方案1】:

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

您可以使用这个简单的sed 命令:

sed "s/-[^:]*:/-$var:/" file

否则:

sed -E "s/-([^:]+):/-$var:/" file

Code Demo

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2019-09-07
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多