I'd like a simple one liner with sed
to update a java property value. Without knowing what the current setting of the java property is, and it may be empty)
before
example.java.property=previoussetting
after
example.java.property=desiredsetting
To change file and directory permissions, use the command chmod (change mode). The owner of a file can change the permissions for user ( u ), group ( g ), or others ( o ) by adding ( + ) or subtracting ( - ) the read, write, and execute permissions.
Create a properties fileRight-click and select Add New Properties File. A new properties file will be added to your project. The new file will be selected and highlighted in the list. Type a name for your properties file, for example, "Properties".
This will update your file:
sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties
This will print into a new file
sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties
This is how you update multiple properties
sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties
Gurus of sed may blame me since this is not the most proper way to do this (e.g. I didn't escape the dots) but I see this as the best option when you don't want to sacrifice readability.
Here's extended discussion: How do I use sed to change my configuration files, with flexible keys and values?
Assuming Linux Gnu sed, 1 solution would be
Edits escaped '.' chars i.e. s/example\.java.../
per correct comment by Kent
replaceString=desiredsetting
sed -i "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties
If you're using BSD sed
on a Mac for instance, you'll need to supply an argument to the -i
to indicate the backup filename. Fortunately, you can use
sed -i '' "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties
as an argument, and avoid having to manage .bak
files in your workflow. (BSD sed
info added 2018-08-10)
If your sed doesn't honor the -i
, then you have to manage tmp files, i.e.
sed "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties > myTmp
/bin/mv -f myTmp java.properties
I hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With