1

スクリプト内で単純な検索と置換を作成する方法はありbashますが、置換は PHP スクリプトを実行することによって行われます。

たとえば、ファイル内の: を見つけ{{KEY}}て、: の出力に置き換える必要があります。これを達成できますか?php -f generate_key.phpapp.configsed

4

3 に答える 3

3

上記のsedベースのソリューションの代わりに、これらの方針に沿って何かを提案したいと思います。

KEY="$(php -f generate_key.php)" awk '{gsub("{{KEY}}", ENVIRON["KEY"]);print;}' < app.config > app.config.new && \
mv app.config.new app.config

T + 20hで編集され、後者のエスケープシーケンスの処理ENVIRONのために代わりに使用されます)awk -v VAR=VALVAL

主な理由は、phpスクリプトの出力に解釈や変換を適用せずに置換を実行するためです。

PHPスクリプトの出力にスラッシュが含まれている場合、sedベースのソリューションは失敗します。また、PHPスクリプトの出力に存在するさまざまなエスケープ文字(\ns、\tsなど)が置き換えられますが、これはおそらく必要なものではありません。 。

于 2012-12-09T23:33:43.617 に答える
2

これを試してください

sed -e "s/{{KEY}}/`php -f generate_key.php`/g" app.config

これにより、置換文字列が PHP スクリプトの出力に置き換えられます。app.config をその場で変更する場合-iは、コマンド ラインにオプションを追加します。

sed -i -e "s/{{KEY}}/`php -f generate_key.php`/g" app.config

@je4d が観察したように、の出力にgenerate_key.phpスラッシュが含まれている場合は/、代わりに別の区切り文字を使用する必要があります。たとえば、

sed -e "s;{{KEY}};`php -f generate_key.php`;g" app.config
于 2012-12-09T23:21:04.417 に答える
0

試す:

cat app.config|sed 's/{{KEY}}/something/g'
于 2012-12-09T23:12:01.967 に答える