sed 's/$HOSTNAME/myhost/g;s/$unconfigured//g' yourfile.txt > another_file.txt
更新:
質問の更新に基づくと、これは適切な解決策ではありません。
更新 2 :
これは、関連する質問への回答に基づいています。未定義の変数を削除するためにハッキングしました (私は perl に慣れていません)。
perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg; s/\$\{([^}]+)\}//eg' yourfile.txt
どの入力テキスト ファイルでも機能するはずですが、${...}
を使用して変数を定義する必要があります。 文字列の一致を簡素化する形式。
(eval の悪さに関する暴言は、読者を混乱させないように別の投稿に移動しました )
これが envsubst
です
echo 'Hello $USER'
Hello $USER
echo 'Hello $USER' | envsubst
Hello malvineous
ただし、おそらく次のように使用することになるでしょう:
envsubst < input.txt > output.txt
envsubst
GNU gettext の一部のようです。