GNU/Linux >> Tutoriels Linux >  >> Linux

Remplacement des variables d'environnement dans un fichier de propriétés

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

mise à jour :

D'après les mises à jour de votre question, ce ne sera pas une bonne solution.

mise à jour2 :

Ceci est basé sur une réponse à une question connexe. Je l'ai piraté (je ne connais pas perl) pour supprimer les variables non définies.

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

Devrait fonctionner pour n'importe quel fichier texte d'entrée, mais vous devrez définir vars en utilisant le ${...} format qui simplifie la correspondance des chaînes.

(la diatribe concernant la méchanceté d'eval a été déplacée vers un article séparé afin de ne pas confondre les lecteurs )


C'est ce que envsubst est pour.

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

Vous l'utiliseriez probablement plus comme ceci :

envsubst < input.txt > output.txt

envsubst semble faire partie de GNU gettext.


Linux
  1. Remplacer les variables d'environnement dans un fichier par leurs valeurs réelles ?

  2. Vérification des variables d'environnement

  3. Forcer bash à développer des variables dans une chaîne chargée à partir d'un fichier

  4. Comment désactiver un grand nombre de variables d'environnement

  5. Comment lire les variables d'environnement d'un processus

Comment définir une variable d'environnement dans Windows

Comment définir des variables d'environnement dans MacOS

Remplacement de chaîne dans Bash

Espaces pour les variables dans le script bash ?

Référencer les variables d'environnement *dans* /etc/environment ?

Variables d'environnement Linux