Bonjour,
j’ai un fichier data.xml de 4 Go dont les données sont sur une seule ligne. Pour simplifier, voici le contenu de mon fichier xml :
<xml version="1.0" encoding="utf-8"?><dossier><fichier>abricot.txt</fichier><fichier>banane.txt</fichier><fichier>clémentine.txt</fichier></dossier></xml>
Si vous voulez voir plus clair :
<xml version="1.0" encoding="utf-8"?>
<dossier>
<fichier>abricot.txt</fichier>
<fichier>banane.txt</fichier>
<fichier>clémentine.txt</fichier>
</dossier>
</xml>
Je rappelle que les données sont sur une seule ligne dans le fichier data.xml. Comme le fichier est volumineux (4Go), je suis obligé de découper ce fichier en plusieurs fichiers pour pouvoir les parser sans saturer ma mémoire ram.
Pour ce faire je recherche une commande permettant de découper le fichier data.xml lorsqu’il trouve à chaque fois la 1000 ème balise fermante . Ainsi on a 1.xml (qui contient les 1000 premières balise ), 2.xml (qui contient les 1000 balises suivantes), 3.xml (qui contient les 1000 balises suivantes), et ainsi de suite.
Une idée ?
C’est vrai que j’aurais pu utiliser sed -i “s/></>\n</g” data.xml | split -d -l 1000, mais comme ma mémoire ram est limité, la partie sed de cette commande est aborté au bout d’un certain temps.
Merci d’avance, cordialement