sedを使用したファイルの複雑なコマンドの置き換え

sedを使用したファイルの複雑なコマンドの置き換え

次の文字列を変更したい

変える:'ステータスコード: {code}'.format(code=r.status_code) 印刷

そして:print('状態コード: {code}'.format(code=r.status_code))

これは私が実行しているコマンドですが失敗します。

find ./ -type f -exec  gsed 's/'print 'Status Code: {code}'.format(code=r.status_code)'/'print('Status Code: {code}'.format(code=r.status_code))'/g' {} \;

特殊文字の影響を避けるために\を使ってみましたが、それでも失敗して停止します。

find ./ -type f -exec  gsed -i 's/print \'Status Code: {code}\'.format\(code=r.status_code\)/print\(\'Status Code: {code}\'.format\(code=r.status_code\)\)/g' {} \;
> 
> 
> 

答え1

式の周囲に二重引用符を使用するか、各リテラルの周りに一重引用符を閉じて再度開くことができます。'たとえば、次のようになります。'\''

sed "s/print 'Status Code: {code}'.format(code=r.status_code)/print('Status Code: {code}'.format(code=r.status_code))/"


sed 's/print '\''Status Code: {code}'\''.format(code=r.status_code)/print('\''Status Code: {code}'\''.format(code=r.status_code))/'

関連情報