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

Shell et commandes POSIX Discussion :

[AIX] Concaténation de fichier


Sujet :

Shell et commandes POSIX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [AIX] Concaténation de fichier
    Bonjour,

    J'ai un problème étrange et j'ai du mal à le résoudre, ne le comprenant pas pleinement.
    Habituellement quand je veux concaténer des fichiers, je fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - cat source_* >> result
    - find . -type f -name "source_*" | xargs -I {} cat {} >> result
    - find . -type f -name "source_*" | while read line; do cat $line >> result; done
    Et habituellement ça marche très bien. Même dans mon cas, souvent ça marche bien.

    SAUF que...

    Je me retrouve confronté à des cas où le cat semble s'arrêter de placer la source dans le result en plein milieu d'une ligne et commence à coller le fichier suivant sans même retourner à la ligne.

    (Forcément mes utilisateurs ne sont pas content. Pour expliquer le contexte, afin d'accélérer des traitements longs et ne consommant presque aucune ressources de grosses machines, j'ai fais un script qui parallélise un traitement fourni en paramètre et chaque process va traiter une tranche d'objets et placer le résultat dans un fichier qui lui est propre. Je me retrouve à la fin avec plein de fichiers qu'il me faut assembler en un seul fichier. Ces fichiers temporaires semblent corrects et je ne retrouve pas d'erreur de caractères pouvant expliquer un tel comportement.)

    J'ai essayé notamment les trois solutions au dessus. J'ai essayé de mettre un sleep au sein de la boucle while ou for (pensant peut être à une histoire de buffer d'écriture). J'ai essayé des ajouts de lignes vides entre les fichiers et même en fin de fichiers temporaires (à ce moment je croyais que c'était la dernière ligne qui sautait, mais en fait en vérifiant, j'ai vu que l'erreur pouvait se produire en plein milieu).

    Je ne sais donc plus trop quoi essayer. Quelqu'un a-t-il une idée? Une piste?

    Ma première idée serait un soucis de buffer d'écriture (taille ou temporisation en ayant déjà rendu la main) mais mes tests ne viennent pas forcément étayer mes suppositions...

    merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 476
    Points : 11 050
    Points
    11 050
    Par défaut
    Citation Envoyé par arkhesis Voir le message
    Je ne sais donc plus trop quoi essayer. Quelqu'un a-t-il une idée? Une piste?
    Et, dans un premier temps, s'assurer que cat se termine bien à chaque occurence en affichant le code retour associé au nom de fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    - find . -type f -name "source_*" | while read line; do cat $line >> result; echo $? $line ; done
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ah pas bête, je vais essayer.

Discussions similaires

  1. Concaténation de fichiers
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/09/2006, 09h57
  2. Concaténer deux fichiers binaires
    Par mickael.be dans le forum Delphi
    Réponses: 7
    Dernier message: 30/07/2006, 13h11
  3. concaténation de fichiers
    Par donmamio dans le forum Langage
    Réponses: 5
    Dernier message: 26/04/2006, 12h49
  4. [debutant] concaténation de fichiers
    Par Spyco dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/07/2005, 10h52
  5. Comment concaténer plusieurs fichiers en un ?
    Par souch dans le forum Langage
    Réponses: 16
    Dernier message: 14/12/2004, 18h58

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