我想要一个简单的单行程序sed来更新java属性值.不知道java属性的当前设置是什么,它可能是空的)
之前
example.java.property=previoussetting
Run Code Online (Sandbox Code Playgroud)
后
example.java.property=desiredsetting
Run Code Online (Sandbox Code Playgroud)
Den*_*isS 17
这将更新您的文件:
sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties
Run Code Online (Sandbox Code Playgroud)
这将打印到一个新文件中
sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties
Run Code Online (Sandbox Code Playgroud)
这是更新多个属性的方法
sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties
Run Code Online (Sandbox Code Playgroud)
sed的大师可能会怪我,因为这不是最合适的方式(例如我没有逃脱点)但我认为这是你不想牺牲可读性时的最佳选择.
以下是扩展讨论: 如何使用sed更改配置文件,灵活的键和值?
she*_*ter 14
假设Linux Gnu sed,将有1个解决方案
编辑逃脱'.' 字符即s/example\.java.../肯特的正确评论
replaceString=desiredsetting
sed -i "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties
Run Code Online (Sandbox Code Playgroud)
sed例如,如果您在Mac上使用BSD ,则需要提供一个参数-i来指示备份文件名.幸运的是,你可以使用
sed -i '' ""s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties
Run Code Online (Sandbox Code Playgroud)
作为参数,避免必须管理.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
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
18152 次 |
| 最近记录: |