|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Bonjour à tous,
Pour mon travail, je dois découper un gros fichier texte (477 Mo) en plusieurs fichiers plus petits. Le fichier de départ est au format csv (séparateur ";" donc) et chaque ligne commence avec un numéro à 9 chiffres dont les trois premiers sont le département. Par exemple 001000021 correspond à une ligne sur le département 001. Je cherche à découper le fichier par département donc pour générer des fichiers unitaires 001.txt, 002.txt etc... contenant toutes les lignes sur les départements. J'ai utilisé la commande suivante sous Cygwin (je suis sous Windows...): et mon fichier split.awk contient: Code :
ça marche "presque" bien: pour certains départements, la découpe s'arrête en plein milieu d'une ligne (toujours la même), et les lignes qui suivent qui font pourtant bien parti du même département ne sont pas extraites... ça fait deux heures que je cherche en vain, si quelqu'un comprend, je lui serais très reconnaissant de m'aider ! Merci d'avance |
||
|
|
01
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 551 ![]() |
Hello,
Pourrais-tu fournir les départements problématiques?
__________________
Alea Jacta Test! |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Malheureusement non je ne peux pas vraiment, ce sont des données confidentielles.
Je peux fournir la ligne sur laquelle l'export s'arrête sur le département 001: il s'agit de la 2ème ligne du fichier en PJ, et l'import se bloque à 001000000;01005;3;OH;1.22;;A;0; Le reste de la ligne et du fichier n'est pas traitée |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Frédéric Brugmans Informaticien multitâche Inscription : février 2005 Messages : 661 ![]() |
Je sais que ce n'est pas une solution mais je pense qu'il était possible de simplifier le code et éviter tout erreur de répétition dans le code
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Merci déjà pour cette commande simplifiée
Je vais faire le test en supprimant la ligne qui pose problème |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Regarde si dans ton fichier (au niveau où ça merdoie) s'il n'y aurait pas des caractères exotiques, style non-imprimable Aides-toi de la commande "cat -A" ou "sed -n l" pour afficher lesdits caractères...
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
J'ai tenté un truc: j'ai créé un fichier en sélectionnant les 95000 premières lignes du fichier d'origine (ça couvre tout le département 01 et le début du 02) et ensuite j'ai relancé la commande d'extraction et là ça passe, j'ai bien toutes les lignes du département 01 sans coupure !
Donc c'est pas la ligne en elle-même qui semble poser problème (d'ailleurs j'ai vérifié, il n'y a aucun caractère particulier) mais la taille fichier ? Je vois pas comment m'en sortir |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Frédéric Brugmans Informaticien multitâche Inscription : février 2005 Messages : 661 ![]() |
Etant donné que tu utilise les outils GNU sous windows, c'est peut etre effectivement une limitation de windows. La meilleur façon de le vérifier serait de lancer le traitement sous linux. J'imagine que tu as des bonnes raisons pour le faire ainsi.
Ce que tu peux essayer de faire, c'est de faire une boucle du genre while read fichier ; echo ligne : awk ... etc |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Bon ça se complique en fait, je n'ai pas travaillé sur le bon fichier, je dois en récupérer un nouveau et retenter, peut-être que je n'aurai plus le problème...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com