En shell, ¿hay alguna manera (preferiblemente con un comando de una línea) que me permita invertir el nombre y el valor de la propiedad en un archivo de propiedades? Supongo que podría hacer esto con Java u otro lenguaje de programación, pero me gustaría algo que pudiera usar fácilmente como parte de un script sin dependencias de otros lenguajes.

Archivo de entrada (input.properties):

var1=foo
var2=bar
var3=hello world

Archivo de salida (output.properties):

foo=var1
bar=var2
hello world=var3
0
James Oravec 22 dic. 2016 a las 22:44

3 respuestas

La mejor respuesta
awk 'BEGIN{OFS=FS="="} {print $2,$1}' input.properties >output.properties

Salida a salida.propiedades:

foo=var1
bar=var2
hello world=var3

Ver: 8 potentes variables incorporadas Awk: FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

1
Cyrus 22 dic. 2016 a las 19:52

Esta es una solución de "puro golpe", que tiene éxito al invocar ningún programa externo:

while IFS== read k v; do echo $v=$k; done  <input.properties >output.properties
2
Dario 22 dic. 2016 a las 22:51

Con GNU sed:

sed -r 's/(.*)=(.*)/\2=\1/' input.properties > output.properties
1
SLePort 22 dic. 2016 a las 19:59