GNU/Linux >> Znalost Linux >  >> Linux

Nahrazení proměnných prostředí v souboru vlastností

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

aktualizace:

Na základě aktualizací ve vaší otázce to nebude dobré řešení.

aktualizace2:

To je založeno na odpovědi na související otázku. Naboural jsem se do toho (neznám perl), abych odstranil nedefinované proměnné.

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

Mělo by to fungovat pro jakýkoli vstupní textový soubor, ale budete muset definovat proměnné pomocí ${...} formát, který zjednodušuje porovnávání řetězců.

(Řád ohledně zla eval přesunut do samostatného příspěvku, aby nedošlo ke zmatení čtenářů )


To je to, co envsubst je pro.

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

Pravděpodobně byste to však použili spíše takto:

envsubst < input.txt > output.txt

envsubst Zdá se, že je součástí GNU gettext.


Linux
  1. Nahradit proměnné prostředí v souboru jejich skutečnými hodnotami?

  2. Prostory pro proměnné ve skriptu Bash?

  3. Kontrola proměnných prostředí

  1. Vynucení bash expandovat proměnné v řetězci načteném ze souboru

  2. Zapsat do souboru .txt?

  3. Jak nahradit proměnné shellu ve složitých textových souborech

  1. Nastavit dočasné prostředí ($PATH)

  2. Jak zrušit nastavení mnoha proměnných prostředí

  3. formát souboru s hesly ldapsearch