GNU/Linux >> Belajar Linux >  >> Linux

Mengganti variabel lingkungan dalam file properti

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

perbarui:

Berdasarkan pembaruan dalam pertanyaan Anda, ini bukan solusi yang baik.

perbarui2 :

Ini didasarkan pada jawaban atas pertanyaan terkait. Saya telah meretasnya (saya tidak terbiasa dengan perl) untuk menghapus vars yang tidak ditentukan.

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

Harus berfungsi untuk file teks input apa pun, namun Anda harus mendefinisikan vars menggunakan ${...} format yang menyederhanakan pencocokan string.

(kata-kata kasar tentang kejahatan eval dipindahkan ke postingan terpisah agar tidak membingungkan pembaca )


Inilah yang envsubst adalah untuk.

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

Anda mungkin akan menggunakannya lebih seperti ini:

envsubst < input.txt > output.txt

envsubst tampaknya menjadi bagian dari gettext GNU.


Linux
  1. Referensi Variabel Lingkungan *di* /etc/environment?

  2. envsubst:perintah tidak ditemukan

  3. Memeriksa variabel lingkungan

  1. Memaksa bash untuk memperluas variabel dalam string yang dimuat dari file

  2. Mengatur variabel lingkungan Linux

  3. Cara membaca variabel lingkungan dari suatu proses

  1. Ganti nama file di terminal Linux

  2. Tulis ke file .txt?

  3. Cara mengganti variabel shell dalam file teks kompleks