GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ersetzen von Umgebungsvariablen in einer Eigenschaftendatei

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

Aktualisierung:

Basierend auf Aktualisierungen in Ihrer Frage ist dies keine gute Lösung.

aktualisierung2 :

Dies basiert auf einer Antwort auf eine verwandte Frage. Ich habe es gehackt (ich bin mit Perl nicht vertraut), um undefinierte Variablen zu entfernen.

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

Sollte für jede Eingabetextdatei funktionieren, Sie müssen jedoch vars mit ${...} definieren Format, das den String-Abgleich vereinfacht.

(Rand bezüglich der Bösartigkeit von eval wurde in einen separaten Beitrag verschoben, um die Leser nicht zu verwirren )


Das ist was envsubst ist für.

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

Sie würden es wahrscheinlich eher so verwenden:

envsubst < input.txt > output.txt

envsubst scheint Teil von GNU gettext zu sein.


Linux
  1. Leerzeichen für Variablen in Bash-Skript?

  2. In .txt-Datei schreiben?

  3. Wie man Shell-Variablen in komplexen Textdateien ersetzt

  4. Wie viele Umgebungsvariablen nicht gesetzt sind

  5. Festlegen von Linux-Umgebungsvariablen

So legen Sie die Umgebungsvariable in Windows fest

So legen Sie Umgebungsvariablen in MacOS fest

Ersetzen von Zeichenfolgen in Bash

Linux-Umgebungsvariablen

Wie man Umgebungsvariablen eines Prozesses liest

ldapsearch passwortdateiformat