usando o sed replace string contendo $ e (e '

0

Como parte de um script de shell, quero substituir

LIBTOOL='$(SHELL) $(top_builddir)/libtool'

com

LIBTOOL=./libtool

O número da linha de origem é 528. Eu tento usar sed como segue

sed -e '528 s/LIBTOOL=\'\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL=.\/libtool/'**

mas recebi um erro.

Então, qualquer ajuda seria apreciada.

    
por Majid Noranian 25.07.2012 / 05:54

1 resposta

0

Você tem outra frase simples sem escape na sua expressão (veja em \/libtool'/LIBTOOL ). Então, aqui está o que funciona para mim:

sed "528 s/LIBTOOL='\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL='.\/libtool'/" filename.ext

Note que eu não incluo o parâmetro -e , já que espera que um nome de arquivo leia suas expressões de (e você forneça a expressão na linha de comando - - não confunda este arquivo com o arquivo a ser processado).

    
por 25.07.2012 / 10:03