検索と置換を実行しようとすると、「sed:-e式#1」が表示されます。

検索と置換を実行しようとすると、「sed:-e式#1」が表示されます。

私はAmazon Linuxを使用しています。検索と置換を実行するためにsedを使用しようとしています。次のエラーが発生します...

[jboss@mydevbox nodejs]$ sed -i -e "s/test.smokeTest('(.*?)', '(.*?)', '(.*?)')/test.smokeTest('username', 'password', 'http://localhost:8081/myproject')/g" test.js 
sed: -e expression #1, char 96: unknown option to `s'

上記の問題を解決するために何をすべきかわかりません。一重引用符と二重引用符にいくつかの問題があるということです。

編集する:私が使っているサンプルファイルです

//Creates the new browser and Logins in
console.log('Validation Complete');
var test = require('./js/Optimus.js');

test.smokeTest('####', '####', 'http://mydomain.com/myproject/');

答え1

最初:

  • で使用した最後の二重引用符を変更してください"

次に、
主な問題はsedオプションを使用していますが、文字列に(引用符なし/)が含まれていることです。最も簡単な解決策は、区切り文字を次のように変更することです。s/#s

sed -i -e "s#test.smokeTest('(.*?)', '(.*?)', '(.*?)')#test.smokeTest(‘username’, ‘password’, 'http://localhost:8081/myproject')#g” test.js

私はまたあなたがこの問題を解決しなければならないと信じています。

  • あなたはとその周辺を使っusernameていますpassword。に変更してください'

新しいファイルを編集します。

質問に追加したファイルの場合は、角かっこをエスケープして次のものを削除する必要があります?

sed -i -e "s#test.smokeTest('\(.*\)', '\(.*\)', '\(.*\)')#test.smokeTest('username', 'password', 'http://localhost:8081/myproject')#g" test.js

関連情報