GNU/Linux >> Tutoriales Linux >  >> Linux

Sustitución de variables de entorno en un archivo de propiedades

sed 's/$HOSTNAME/myhost/g;s/$unconfigured//g' yourfile.txt > another_file.txt

actualizar:

Según las actualizaciones en su pregunta, esta no será una buena solución.

actualización2:

Esto se basa en una respuesta a una pregunta relacionada. Lo pirateé (no estoy familiarizado con Perl) para eliminar las variables indefinidas.

perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg; s/\$\{([^}]+)\}//eg' yourfile.txt

Debería funcionar para cualquier archivo de texto de entrada, sin embargo, deberá definir vars usando el ${...} formato que simplifica la coincidencia de cadenas.

(la diatriba sobre la maldad de eval se trasladó a una publicación separada para no confundir a los lectores )


Esto es lo que envsubst es para.

echo 'Hello $USER'
Hello $USER
echo 'Hello $USER' | envsubst
Hello malvineous

Sin embargo, probablemente lo usarías más así:

envsubst < input.txt > output.txt

envsubst parece ser parte de GNU gettext.


Linux
  1. ¿Espacios para variables en Bash Script?

  2. Comprobación de variables de entorno

  3. Obligar a bash a expandir las variables en una cadena cargada desde un archivo

  4. Cómo sustituir variables de shell en archivos de texto complejos

  5. Establecer un entorno temporal ($PATH)

Cómo establecer la variable de entorno en Windows

Cómo establecer variables de entorno en MacOS

Sustitución de cadena en Bash

¿Reemplazar las variables de entorno en un archivo con sus valores reales?

¿Hacer referencia a variables de entorno *en* /etc/environment?

Variables de entorno de Linux