ユーザーが sed を使用して事前に定義された方法でファイルをリモートで編集するために使用できるパッチを作成しようとしています。これを各コンピューターで手動で行うこともできますが、時間がかかります。
私が苦労している行は次のとおりです。
host=[hostname]
port=[portnum]
ssh -t $host -p $port "cp ~/file1 ~/file1.bak ; sed -i \"s/fcn1('param1', $2)\n/fcn2('param2'):$zoom\n/g\" ~/file1"
これにより、file1 のバックアップが作成され、ファイル内の行が編集されます。実際には複数の行を編集したいのですが、この行は問題を示しています: sed コマンド内で $ 記号が使用されていなければ、コマンドは機能します。
これらの $ 記号をエスケープする方法をいくつか試しましたが、機能する方法が見つからないようです。を使用できます。検索ではワイルドカードを使用しますが、置換文字列では明らかにそうではありません。
$2 の展開を避けるために、sed コマンドに単一引用符を使用しますが、コマンド内で単一引用符が既に使用されています。
この問題を克服する方法について何か考えがある人はいますか? 提案をお寄せいただきありがとうございます。