2012-02-20 11 views
8

Me gustaría un simple un trazador de líneas con sed para actualizar un valor de propiedad java. Sin saber lo que la configuración actual de la propiedad Java es, y puede estar vacía)Usando sed para actualizar una propiedad en un archivo de propiedades java

antes

example.java.property=previoussetting 

después

example.java.property=desiredsetting 
+0

[¿Qué has intentado?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

Respuesta

7

Suponiendo Linux sed de GNU, 1 solución sería

Ediciones escapado '.' es decir, caracteres s/example\.java.../ por comentario correcta por Kent

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

Si su SED no honra al -i, entonces usted tiene que manejar archivos temporales, es decir

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

espero que esto ayude.

+0

-1 aunque OP tiene aceptó esta respuesta. el 'punto' no se escapó, por lo que significa 'CUALQUIER carácter' podría cambiar la propiedad incorrecta en el archivo. ¡es peligroso! – Kent

+0

@Kent: peligroso parece un término fuerte. Pero gracias por ayudarme a mejorar mi publicación. Hoofamon: consulte la publicación revisada para mejorar los reemplazos en sus propiedades de Java. Buena suerte a todos. – shellter

9

Esto actualizará su archivo:

sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties 

Esto imprimirá en un nuevo archivo

sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties 

Esta es la forma de actualizar varias propiedades

sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties 

Gurús de SED puede culparme ya que esta no es la forma más adecuada de hacer esto (por ejemplo, yo no escapó a los puntos) pero veo esto como la mejor opción cuando no quieres sacrificar la legibilidad.

Aquí es extensa discusión: How do I use sed to change my configuration files, with flexible keys and values?

Cuestiones relacionadas