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

时间:2012-02-20 20:53:29

标签: java sed

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

example.java.property=previoussetting

example.java.property=desiredsetting

2 个答案:

答案 0 :(得分:16)

这将更新您的文件:

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 的大师可能会责怪我,因为这不是最合适的方式(例如我没有逃脱这些点)但我认为这是你最好的选择#39;想要牺牲可读性。

以下进行了扩展讨论: How do I use sed to change my configuration files, with flexible keys and values?

答案 1 :(得分:14)

假设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  

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

如果你的sed不尊重-i,那么你必须管理tmp文件,即

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

我希望这会有所帮助。