尝试运行搜索和替换时获取“sed:-e表达式#1”

尝试运行搜索和替换时获取“sed:-e表达式#1”

我正在使用亚马逊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 选项,但您的字符串还包含 (un-quoted /) 。最简单的解决方案是将分隔符更改为,如下所示:s/#s

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

我也相信你应该解决这个问题:

  • 您正在使用and周围的usernamepassword。将它们更改为'.

编辑新文件。

对于您刚刚添加到问题中的文件,您需要转义括号并删除?

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

相关内容