使用 sed 更新 java 属性文件中的属性
我想要一个简单的一个衬里来更新java属性值。不知道java属性的当前设置是什么,它可能是空的)sed
以前
example.java.property=previoussetting
后
example.java.property=desiredsetting
我想要一个简单的一个衬里来更新java属性值。不知道java属性的当前设置是什么,它可能是空的)sed
以前
example.java.property=previoussetting
后
example.java.property=desiredsetting
这将更新您的文件:
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 通过灵活的键和值更改配置文件?
假设 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
我希望这有帮助。