1

sedFile.txt文字列形式のファイルがありますCONNECTION='mysql://user:user@10.79.19.2:3308/SSMS/SUBSCRIBE';

次の行を持つスクリプトを 1 つ作成しました。

fin=CONNECTION='mysql://user:user@10.79.19.2:3308/SSMS/SUBSCRIBE';  
repla=connection  
sed  -i "s/\$fin/$repla/g" /home/sedFile.txt 

スクリプトが実行されていても、ファイルが変更されません。

私は次のことを試しました:

sed  -i 's/${fin}/${repla}/g' /home/sedFile.txt  
sed  -i 's/^$fin/$repla/g' /home/sedFile.txt  
sed  -i "s/$fin/$repla/g" /home/sedFile.txt  
sed  -i "s/${fin}/${repla}/g" /home/sedFile.txt
4

3 に答える 3

1

一重引用符をパターンに含める場合は、引用符で囲むかエスケープする必要があります。

fin="CONNECTION='mysql://user:user@10.79.19.2:3308/SSMS/SUBSCRIBE'"

次に、試した4行のいずれかを使用します(つまり、の行ではありません\$fin)。

更新:この文字はすでに文字列に存在するため、動作させるために、パターンと置換を分離するためにsed使用することはできません。/別のセパレータを使用します。

sed -i "s,$fin,$repla,g" /home/sedFile.txt
于 2012-09-04T11:18:42.993 に答える
1

他の回答と同じかもしれませんが、試してみても問題ありません

fin="CONNECTION='mysql://user:user@10.79.19.2:3308/SSMS/SUBSCRIBE';"
repla="connection"
sed -i "s|${fin}|${repla}|g" /home/sedFile.txt
于 2012-09-04T13:01:58.607 に答える
0
fin="CONNECTION='mysql://user:user@10.79.19.2:3308/SSMS/SUBSCRIBE'"
repla=connection
  in=$fin out=$repla perl -pi.nk -e 's/\Q$ENV{"in"}/$ENV{"out"}/g'  /home/sedFile.txt
于 2012-09-04T12:49:01.087 に答える