Adicione uma nova linha após cada tag XML

0

Meu arquivo xml é assim:

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

Eu preciso ter isso assim:

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

Após cada ">" Eu preciso colocar um caractere de nova linha com awk ou sed. Como posso conseguir isso? obrigado

    
por metin sober 20.09.2010 / 15:01

2 respostas

2

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

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

Se houver espaços em branco entre os colchetes angulares, isso pode ser melhor:

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

que eliminará esse espaço em branco.

    
por 20.09.2010 / 16:00
1

Se você quiser fazer isso direito, você precisa de algo mais poderoso que o awk. Um dos problemas é o awk não manipular > dentro de strings ou comentários. Você pode estar melhor com perl ou python. Se isso é apenas para facilitar a visualização visual de um arquivo, talvez seja 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 campos e imprime cada um em sua própria linha. É bem bruto, mas pode ser um ponto de partida.

    
por 20.09.2010 / 15:46

Tags