これは簡単な質問かもしれないと思いますが、私はどこを見てもいくつかの回避策を試しましたが、まだ問題を解決していません。
問題の説明:ファイル内の文字を置き換える必要があり、コマンドラインを使用して簡単に置き換えることができます。
sed -e 's/pattern1/pattern2/g' full_path_to_file/file
しかし、bashスクリプト内で同じ行を使用すると、それを置き換えることができないようで、エラーメッセージは表示されず、置換されていないファイルの内容だけが表示されます。
#!/bin/sh
VAR1="patter1"
VAR2="patter2"
VAR3="full_path_to_file"
sed -e 's/${VAR1}/${VAR2}/g' ${VAR3}
どんな助けでもいただければ幸いです。
どうもありがとうございました。
試してみてください
sed -e "s/${VAR1}/${VAR2}/g" ${VAR3}
Bashリファレンス 言います:
文字「$」と「 `」は、二重引用符で囲まれた特別な意味を保持します
したがって、それはあなたの変数を解決することができるでしょう
私はあなたのようなスクリプトを使用しています...そして私のものも同様に機能します!
#!/bin/sh
var1='pattern1'
var2='pattern2'
sed -i "s&$var1&$var2&g" *.html
ほら、私の使用する「-i」...そして私が使用する区切り文字「&」はあなたのものとは異なります。区切り文字「&」は、AT PATTERNを持たない他の文字を使用できます。
次を使用できます。
sed -i "s#$var1#$var2#g" *.html
sed -i "s@$var1@$var2@g" *.html
.。
私のパターンが「[email protected]」の場合、もちろん「#」、「%」などの別の区切り文字を使用する必要があります...わかりましたか?