Eu não acho que tr
possa substituir seqüências de caracteres (apenas caracteres únicos de cada vez, embora possivelmente de um conjunto ) - eu tentaria algo como
sed 's|</ROW>|&\n|g' source.xml > destination.xml
Eu tenho um enorme arquivo XML com o qual preciso trabalhar. No momento, o arquivo é apenas uma linha que contém cerca de 2 milhões de caracteres, o que representa 30.000 registros. Não há retornos de carro ou feeds de linha. O que eu preciso fazer é fazer cada registro em sua própria linha. Novos registros começam com <ROW>
e terminam com </ROW>
.
Eu tenho procurado por aqui e parece que as ferramentas para usar são: sed, tr ou awk, mas não tenho certeza qual é o mais apropriado.
Eu tentei isso sem sucesso:
tr '<ROW' '2 <ROW' <source.xml |tee destination.xml
Acima parece produzir algumas coisas bem estranhas, então eu devo estar bem longe daqui. talvez seja isso "<" personagem que é o problema?
Eu não acho que tr
possa substituir seqüências de caracteres (apenas caracteres únicos de cada vez, embora possivelmente de um conjunto ) - eu tentaria algo como
sed 's|</ROW>|&\n|g' source.xml > destination.xml
Se possível (por exemplo, um documento xml válido), aconselho bastante uma ferramenta destinada a esse trabalho. por exemplo, xmllint (do pacote libxml2-utils).
xmllint --format filename.xml