como ignorar caracteres especiais em sed

1

Eu tenho o seguinte código; ToString="java.extended.properties = -XX: MaxPermSize \ = 128m -XX: CompileCommand = excluir, com / tibco / repo / RVRepoProcessBridge, handleServerHeartbeat"

sed -i "s @. java.extended.properties. @ $ ToString @ g" "$ ToFile"

Altera o ToFile, mas a string não possui os 2 \ ns nele. Como posso garantir que eles sejam reconhecidos como parte da string?

    
por chris 01.07.2016 / 16:01

1 resposta

0

Tente escapar do '.' no regex sed, para ser mais preciso.

E para a variável ToString:

  1. escape do '\' para que o interpretador de shell seja expandido para uma única barra (no terceiro ponto abaixo),
  2. ao definir essa variável, use aspas simples para que ela não seja expandida e
  3. expanda (com aspas duplas) ao usá-lo no sed para obter o resultado final correto.

Então, algo assim deve funcionar:

ToString='java.extended.properties=-XX\:MaxPermSize\=128m -XX:CompileCommand=exclude,com/tibco/repo/RVRepoProcessBridge,handleServerHeartbeat'

sed -i "s@.*java\.extended\.properties.*@""$ToString""@g" "$ToFile"
    
por 01.07.2016 / 16:07

Tags