Tente isto:
sed -i '.bak' "s/exports\.version = '2\.0\.0'/exports.version = '2.0.1'/g" phantomjs.js
Eu quero fazer algo assim, mas não sei como.
Eu quero atualizar o exports.version = '2.0.0' para um novo valor de exports.version = '2.0.1'
Usando:
sed -i '.bak' 's/'2.0.0'/'2.0.1'/g' phantomjs.js
Mas isso pode causar um problema se eu tiver algo mais com o 2.0.0
sed -i '.bak' 's/exports.version = '2.0.0'/exports.version = '2.0.1'/g' phantomjs.js
Em resumo, como alimentar um padrão sed de exports.version = '2.0.0'
uname -a
15.0.0 Darwin Kernel Versão 15.0.0: sáb 19 de setembro 15:53:46 PDT 2015; root: xnu-3247.10.11 ~ 1 / RELEASE_X86_64 x86_64
Obrigado,
L
Tente isto:
sed -i '.bak' "s/exports\.version = '2\.0\.0'/exports.version = '2.0.1'/g" phantomjs.js
Você está tentando colocar aspas simples dentro de uma string entre aspas simples. Se você fizer isso, você precisa inseri-los assim:
$ sed -i .bak 's/exports.version = '\''2.0.0'\''/exports.version = '\''2.0.1'\''/g' phantomjs.js
Não é possível colocar diretamente uma aspa simples dentro de uma string entre aspas simples. Acima, '\''
funciona porque a primeira aspa simples termina a cadeia precedente com aspas simples, a \'
coloca uma aspa simples na linha de comando e a seguinte '
inicia uma nova cadeia entre aspas simples.
No seu caso particular, você também pode usar uma string com aspas duplas:
sed -i .bak "s/exports.version = '2.0.0'/exports.version = '2.0.1'/g" phantomjs.js
Isso é conveniente porque é possível colocar aspas simples dentro de uma cadeia de aspas duplas sem escape. Isso é complicado, porque você precisa ter certeza de que não há caracteres ativos em shell na string. Neste caso, não há, por isso, é seguro.