Se você deseja substituir uma palavra-chave por uma string usando sed, sed tenta muito interpretar sua string de substituição. Se a string de substituição tiver caracteres que o sed considere especiais, como um caractere '/', ela falhará, a menos que você queira que a string de substituição tenha caracteres que digam ao sed como agir.
Ex:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Existe alguma maneira de dizer ao sed para não tentar interpretar a sequência de substituição para caracteres especiais? Tudo o que eu quero é poder substituir uma palavra-chave em um arquivo pelo conteúdo de uma variável, independentemente do conteúdo.
sed(1)
apenas interpreta o que recebe. No seu caso, obtém isso através de uma interpolação de shell. Eu acredito que você não pode fazer o que quiser, mas verifique o manual. Eu sei que no Perl (que faz uma sed
substituição aceitável , com expressões regulares muito mais ricas), você pode especificar que uma string seja literalmente copiada novamente, verifique o manual.
sed
e fazer com que eles não sejam especiais, basta escapar da barra invertida.VAR='hi\/'
não dá esse problema.