sed命令不会替换文件中出现的所有占位符



我需要替换文件中出现的所有占位符。我正在使用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()));

有人能帮我补一下缺失的部分吗?

感谢你的帮助!提前感谢!

您应该更改

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

在中

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

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

您缺少g标志

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

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

最新更新