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

问题描述:

我想要一个简单的单线程与sed来更新java属性值。如果不知道Java属性的当前设置是什么,它可能是空的)使用sed更新java属性文件中的属性

example.java.property=previoussetting 

example.java.property=desiredsetting 
+0

[你尝试过什么?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-02-20 20:55:08

假设的Linux的GNU的sed

之前,1个解决方案将是

编辑转义'。'字符即s/example\.java.../每正确的注释肯特

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

如果您的sed不兑现-i,那么你必须要管理。tmp文件,即

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

我希望这有助于。

+0

-1虽然OP具有接受了这个答案。 '点'不会被转义,所以它意味着'任何字符'它可以改变文件中的错误属性。这很危险! – Kent 2012-02-20 21:23:54

+0

@Kent:危险似乎是一个强词汇。不过谢谢你帮助我改善了我的帖子。 Hoofamon:请参阅修改后的帖子,以改进您的Java属性的替换。祝你们好运。 – shellter 2012-02-20 21:43:14

这将更新文件:

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可能会责怪我,因为这不是最恰当的方式来做到这一点(例如我并没有逃避这些问题),但是当你不想牺牲可读性时,我认为这是最好的选择。

这里的广泛讨论: How do I use sed to change my configuration files, with flexible keys and values?