Obtendo "sed: -e expressão # 1" ao tentar executar a pesquisa e substituir

0

Estou usando o Amazon Linux. Estou tentando executar uma pesquisa e substituir usando sed. Estou correndo para o erro abaixo ...

[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'

Não tenho certeza do que preciso fazer para corrigir o problema acima, mas há algo acontecendo com o uso de aspas simples e aspas duplas.

Editar: este é o arquivo de exemplo que estou usando

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

test.smokeTest('####', '####', 'http://mydomain.com/myproject/');
    
por Dave 26.04.2016 / 18:47

1 resposta

1

Primeiro de tudo:

  • A última cota dupla usada é altere para " .

Então:
O principal problema é que você está usando / para a opção s de sed, mas sua string também contém (un-quoted) / . A solução mais simples é mudar para # para o delimitador s , como este:

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

Eu também acredito que você deveria resolver isso:

  • Você está usando e em torno de username e password . Mude-os para ' .

Editar para novo arquivo.

Para o arquivo que você acabou de adicionar à sua pergunta, você precisa escapar dos parênteses e remover o ? :

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

Tags