SALT
ファイル内の文字列を別のファイルの内容に置き換える必要があります。問題は、入力ファイルに複数行が含まれていることです。私は bash スクリプトで次のようなことを試しました:
SALT=`cat salt.txt`;
sed "s/SALT/$SALT/" wp-config.php > result.txt
問題なく動作します塩.txtは 1 行ですが、行が複数ある場合は失敗します。PERL で実行できると読みました。しかし、方法がわかりません。助けていただけませんか?
答え1
別のperl
方法:
perl -pe 's/SALT/`cat salt.txt`/e' wp-config.php > result.txt
ここで重要なのは、コマンドの結果を置換文字列として/e
使用できるようにする regexp オプションです。perl
答え2
に固執したい場合はbash
、文字列にもファイルにも現れない文字、たとえば ; を選択します@
。
SALT=`< salt.txt tr '\n' '@'`
sed "s/SALT/$SALT/" wp-config.php | tr '@' '\n' > result.txt
この方法では、置換前にnewline
文字列内の文字が に変更され@
、置換後に文字@
が に戻されるためnewlines
、SALT
配列として扱われるのではなく、長い文字列を含む変数として扱われます。
答え3
あなたはこれを行うことができます:
sed -e "/SALT/{r salt.txt" -e "d}" wp-config.php > result.txt
はsalt.txt
ソルト、wp-config.php
は入力ファイル、SALT
は置換する文字列です
答え4
perl -e 'open my $S, "<", "salt.txt" or die $!;
$salt = do { local $/ ; <$S> };
s/SALT/$salt/, print while <>;
' wp-config.php > result.txt
最初の行は を開きますsalt.txt
。2
行目は、その内容を $salt 変数に読み込みます。3 行
目は、コマンドライン引数をファイル名として受け取り、ファイルを 1 行ずつ読み込んで文字列を置き換えます。