我需要用SALT
另一個文件的內容替換文件中的字串。問題是輸入檔有多行。我在 bash 腳本中嘗試了類似的操作:
SALT=`cat salt.txt`;
sed "s/SALT/$SALT/" wp-config.php > result.txt
當鹽.txt是單行,但如果有更多行,則會失敗。我讀到它可以做 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
salt 是哪裡,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
.
第二行將其內容讀取到 $salt 變數中。
第三個將命令列參數作為檔案名,逐行讀取檔案並替換字串。