我需要替换文件中出现的所有占位符。我正在使用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
用于将替换应用于正则表达式的所有匹配项,而不仅仅是第一个匹配项。