Sim, isso poderia ser feito com sed, mas eu concordo com Jens. Eu recomendaria usar uma ferramenta adequada como a biblioteca python + lxml para pesquisar e substituir suas tags.
Eu tenho um arquivo xml
em que a linha que precisa ser pesquisada é:
SEARCH='<?xml version="1.0" encoding="UTF-8" standalone="no"?><SSC>'
Esse valor pesquisado precisa ser substituído pelo valor da variável a seguir ou também pode ser armazenado em outro arquivo:
REPLACE='<?xml version="1.0" encoding="UTF-8" standalone="no"?><SSC><ErrorContext><CompatibilityMode>0</CompatibilityMode><ErrorOutput>1</ErrorOutput>.......some more tags.....</MethodContext>
'
Como isso pode ser feito usando comandos unix como SED ou AWK? (Aqui SEARCH precisa ser substituído por REPLACE.
Sim, isso poderia ser feito com sed, mas eu concordo com Jens. Eu recomendaria usar uma ferramenta adequada como a biblioteca python + lxml para pesquisar e substituir suas tags.
Tanto quanto eu posso ver os personagens a serem escapados:
awk '/<\?xml version="1.0" encoding="UTF-8" standalone="no"\?><SSC>/ {print "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><SSC><ErrorContext><CompatibilityMode>0</CompatibilityMode><ErrorOutput>1</ErrorOutput>.......some more tags.....</MethodContext>"}' <<< '<?xml version="1.0" encoding="UTF-8" standalone="no"?><SSC>'
Ou se você precisar usar variáveis, também escape "no campo SEARCH e escape os caracteres duas vezes, uma vez para ser armazenado em uma variável e duas vezes para ser repetido!
SEARCH_escaped='sed -e 's/\?/\\?/g' -e 's/\"/\\"/g' <<< $SEARCH'
REPLACE_escaped='sed 's/\"/\\"/g' <<< $REPLACE'
awk "/$SEARCH_escaped/ {print \"$REPLACE_escaped\"}" <<< $SEARCH