Pergunta
Como faço para escapar '<' e '>' personagem em sed.
Eu tenho alguns arquivos xml que precisa de algum texto entre as tags para ser substituído. Como faço para escapar dos '>' e '<' caracteres.
O problema com> e <é que tem significado especial no shell para redirecionar a saída para um arquivo. Assim barra invertida não funciona.
Solução
Ok. Descobri por mim mesmo. Use aspas.
$ sed -i "s/>foo</>bar</g" file
Outras dicas
Basta colocar uma barra invertida antes de-los ou colocá-los entre aspas simples ou duplas. Pensando bem, a sua pergunta eu acho que precisa ser mais clara. Você está tentando usar sed para processar um arquivo XML e você deseja obter o que está entre um tag? Então você quer:
sed -re 's@(<TAG.*?>).*?(</TAG>)@\1hi\2@' test.xml
escapar deles com barra invertida
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow