我正在使用亚马逊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’
周围的username
和password
。将它们更改为'
.
编辑新文件。
对于您刚刚添加到问题中的文件,您需要转义括号并删除?
:
sed -i -e "s#test.smokeTest('\(.*\)', '\(.*\)', '\(.*\)')#test.smokeTest('username', 'password', 'http://localhost:8081/myproject')#g" test.js