Escapando caracteres na linha de comando procure e substitua [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

No Unix (executando o MacOS High Sierra), vi alguns métodos diferentes de pesquisa / substituição (em vários arquivos), por exemplo:

perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.txt

ou usando sed ou grep , etc. O problema é: como faço para escapar de minhas strings de pesquisa corretamente? Por exemplo, se eu precisar substituir http://my.site/dir por http://new.my.site/dir , obviamente, não posso incluir barras na minha string de pesquisa sem escapar.

    
por Talk Nerdy To Me 21.05.2018 / 19:51

1 resposta

0

Se for especificamente este comando, observe que com Perl para o operador s/// você pode escolher outros delimitadores além de / , o que torna sua vida muito mais fácil, já que você não precisa escapar de nada.

Por isso, o seguinte funcionará:

perl -pi -w -e 's!http://my.site/dir!http://new.my.site/dir!g;' *.txt

Você pode usar qualquer outro caractere que não seja ! se desejar, desde que não apareça nem na fonte nem na string de substituição. Além disso, como todo o "script" está em ' , seu conteúdo não é analisado pelo shell, portanto, você também está protegido contra interpolações de shell de itens como $ e outros.

Veja link para todos os detalhes.

    
por 21.05.2018 / 20:49

Tags