GNU/Linux >> Linux Esercitazione >  >> Linux

Sostituzione delle variabili di ambiente in un file delle proprietà

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

aggiornamento:

Sulla base degli aggiornamenti nella tua domanda, questa non sarà una buona soluzione.

aggiornamento2 :

Questo si basa su una risposta a una domanda correlata. L'ho hackerato (non ho familiarità con perl) per rimuovere le variabili non definite.

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

Dovrebbe funzionare per qualsiasi file di testo di input, tuttavia dovrai definire vars usando ${...} formato che semplifica la corrispondenza delle stringhe.

(lo sfogo sulla malvagità di eval è stato spostato in un post separato per non confondere i lettori )


Questo è ciò che envsubst è per.

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

Probabilmente lo useresti più in questo modo però:

envsubst < input.txt > output.txt

envsubst sembra far parte di GNU gettext.


Linux
  1. envsubst:comando non trovato

  2. Controllo delle variabili di ambiente

  3. Forzare bash a espandere le variabili in una stringa caricata da un file

  4. Imposta un ambiente temporaneo ($PATH)

  5. Come annullare l'impostazione di molte variabili d'ambiente

Come impostare la variabile d'ambiente in Windows

Come impostare le variabili d'ambiente in MacOS

Sostituzione di String in Bash

Sostituire le variabili d'ambiente in un file con i loro valori effettivi?

Fare riferimento a variabili d'ambiente *in* /etc/environment?

Variabili d'ambiente Linux