Adicionar uma nova linha após cada tag XML

0

Meu arquivo xml fica assim:

<price = "2.22"><instock = "1">

Eu preciso tê-lo assim:

<price = "2.22">
<instock = "1">

Depois de cada caractere ">", preciso colocar um caractere de nova linha com awk ou sed. Como posso conseguir isso? obrigado

metin sóbrio
fonte
Não tenho certeza <price = "2.22">se o XML é válido.
grawity

Respostas:

2

Como disse KeithB, existem problemas em potencial que podem surgir com o uso de uma abordagem grosseira. No entanto, essa abordagem bruta é um pouco mais seletiva, de modo que as chances de falhar são reduzidas em cerca de 0,00001%, o que pode ser suficiente.

sed 's|><|>\n<|g' inputfile

Se houver espaço em branco entre os colchetes angulares, isso poderá ser melhor:

sed 's|>[[:space:]]*<|>\n<|g' inputfile

o que eliminará esse espaço em branco.

Dennis Williamson
fonte
1

Se você quiser fazer isso corretamente, precisará de algo mais poderoso que o awk. Um dos problemas é que o awk não manipula >cadeias ou comentários internos. Você pode estar melhor com perl ou python. Se isso é apenas para facilitar a visualização visual de um arquivo, pode ser bom.

Um script awk rápido e sujo é

 awk '{for(i=1; i<= NF-1; i++) printf "%s>\n",$i}' FS='>'

Isso trata >como o separador entre os campos e imprime cada um em sua própria linha. É bem bruto, mas pode ser um ponto de partida.

KeithB
fonte