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.

Foi útil?

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
scroll top