IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unix Discussion :

Aide pour découpage fichier avec awk


Sujet :

Unix

  1. #1
    Invité
    Invité(e)
    Par défaut Aide pour découpage fichier avec awk
    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...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -f split.awk fichiersource.txt

    et mon fichier split.awk contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /^001/ {print >> "001.txt"}
    /^002/ {print >> "002.txt"}
    /^003/ {print >> "003.txt"}
    /^004/ {print >> "004.txt"}
    /^005/ {print >> "005.txt"}
    etc...

    ç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
    Dernière modification par ok.Idriss ; 24/04/2011 à 11h27. Motif: merci d'utiliser les balises [CODE][/CODE] (#)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Hello,

    Pourrais-tu fournir les départements problématiques?

  3. #3
    Invité
    Invité(e)
    Par défaut
    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
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk -F\; '{  print $0  >> substr($1,0,3)".txt" }' FICHIER.TXT
    Ensuite, est ce que tu as fait le test en enlevant ou en déplaçant la ligne qui pose problème ? Quel est le résultat ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci déjà pour cette commande simplifiée

    Je vais faire le test en supprimant la ligne qui pose problème

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    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.

  7. #7
    Invité
    Invité(e)
    Par défaut
    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

  8. #8
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    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

  9. #9
    Invité
    Invité(e)
    Par défaut
    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...

Discussions similaires

  1. Aide pour renommer fichiers avec .bat
    Par bobsapp dans le forum Windows
    Réponses: 6
    Dernier message: 21/03/2007, 13h11
  2. problème formatage de fichier avec awk
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/11/2006, 12h53
  3. Formatage de fichier avec awk
    Par sam56 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 12/10/2006, 11h04
  4. Aide pour un warning avec RegSetValueEx
    Par Pierre.g dans le forum Windows
    Réponses: 4
    Dernier message: 24/08/2006, 14h46
  5. [PHP-JS] besoin d'aide pour menu déroulant avec lien
    Par Damarus dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo