【问题标题】:sed command does not replace all the occurrences of a placeholder in a file [duplicate]sed 命令不会替换文件中所有出现的占位符 [重复]
【发布时间】:2021-08-22 13:29:12
【问题描述】:

我需要替换文件中所有出现的占位符。我正在使用 bash 脚本。
我已经尝试了以下命令:

$Service_Name="ABC"
sed -i "s/_servicename_/$Service_Name/" XYZ.java

它只替换文件中一行中占位符的第一个单词,而不是一行中的多个占位符。

示例:
如果文件中的行是:

_servicename_WorkerException(String.format(_servicename_Test.Failed.getMessage()));

现在输出如下所示:

ABCWorkerException(String.format(_servicename_Test.Failed.getMessage()));

我想要以下输出:

ABCWorkerException(String.format(ABCTest.Failed.getMessage()));

有人可以帮忙补一下缺失的部分吗?

感谢您的所有帮助!提前致谢!

【问题讨论】:

  • 使用s/.../.../g

标签: linux bash shell


【解决方案1】:

你应该改变

sed -i "s/_servicename_/$Service_Name/" XYZ.java

sed -i "s/_servicename_/$Service_Name/g" XYZ.java

换句话说,您必须添加g 说明符。

【讨论】:

    【解决方案2】:

    您缺少g 标志

    sed -i "s/_servicename_/$Service_Name/g" XYZ.java
    

    g 用于将替换应用于正则表达式的所有匹配项,而不仅仅是第一个。

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 2021-08-21
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2023-03-15
      • 2016-05-29
      相关资源
      最近更新 更多