sed procura e substitui por variável contendo barra

6

Estou tentando substituir uma string dentro de um arquivo de texto por uma variável.

Estou usando este código:

sed -i "s/search text \/TAG\//replace text ${variable}/" ${textfile}

O conteúdo da variável é /newTAG/ . E o conteúdo da variável é o problema, mais exatamente o / no início e no final.

Quando ambos os / são removidos, o conteúdo é apenas newTAG , tudo funciona bem.

Eu já tentei o seguinte

sed -i "s/search text \/TAG\//replace text "${variable}"/" ${textfile}
sed -i 's/search text \/TAG\//replace text "${variable}"/' ${textfile}

Alguém pode me ajudar? Obrigado

    
por Bird Person 10.05.2017 / 11:25

1 resposta

9

Use algo diferente de / como delimitador da regex (por exemplo, os dois pontos : ):

sed -i "s:search text /TAG/:replace text ${variable}:" "${textfile}"

Ou escape do / na variável.

    
por muru 10.05.2017 / 11:36