使用 sed 更新 java 属性文件中的属性

2022-09-02 11:38:38

我想要一个简单的一个衬里来更新java属性值。不知道java属性的当前设置是什么,它可能是空的)sed

以前

example.java.property=previoussetting

example.java.property=desiredsetting

答案 1

这将更新您的文件:

sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties

这将打印到一个新文件中

sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties

这是更新多个属性的方法

sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties

sed大师可能会责怪我,因为这不是最正确的方法(例如,我没有逃脱这些点),但是当你不想牺牲可读性时,我认为这是最好的选择。

以下是扩展讨论:如何使用 sed 通过灵活的键和值更改配置文件?


答案 2

假设 Linux Gnu sed,1 个解决方案将是

编辑转义了“.”字符,即 根据肯特的正确评论s/example\.java.../

 replaceString=desiredsetting
 sed -i "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties

例如,如果您在Mac上使用BSD,则需要为提供参数以指示备份文件名。幸运的是,您可以使用sed-i

 sed -i '' "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties  

作为参数,并避免管理工作流中的文件。(BSD sed 信息已添加 2018-08-10).bak

如果您的 sed 不符合 ,则必须管理 tmp 文件,即-i

    sed "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties > myTmp
    /bin/mv -f myTmp java.properties

我希望这有帮助。


推荐