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

Langage Perl Discussion :

split de fichier puis recopie avec modification de la copie si besoin


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut split de fichier puis recopie avec modification de la copie si besoin
    Bonjour,

    je dois traiter des fichiers avec plusieurs documents et j'ai un soucis car mon script ne fait pas exactement ce que je veux. Explication :
    exemple :

    Fichier.txt :

    Lundi guichet1
    Mardi guichet1
    Mercredi guichet3
    Lundi guichet2
    Mardi guichet8
    Mercredi guichet3
    Lundi guichet5
    Mardi guichet8
    Mercredi guichet12

    J'aimerais en sortie splitter ce document à chaque fois que je rencontre Lundi en début de ligne et j'aimerais qu'après split si à ligne lundi, c'est marqqué guichet1, je recopie le fichier en changeant l'expression guichet1 en gichet0. "précision, guichet1 autour toujours la même position quelque soit le fichier.

    J'aurais donc à la fin :

    fichier1.txt :

    Lundi guichet1
    Mardi guichet1
    Mercredi guichet3

    fichier2.txt :

    Lundi guichet2
    Mardi guichet8
    Mercredi guichet3

    fichier3.txt :

    Lundi guichet5
    Mardi guichet8
    Mercredi guichet12

    fichier4.txt :

    Lundi guichet0
    Mardi guichet1
    Mercredi guichet3

    Quelqu'un peut-il m'aider à faire ça en sachant que je réussis déjà à découpet le fichier initial en autant de fichiers que de documents?

  2. #2
    Membre éclairé Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Par défaut
    hello,

    Difficile de te comprendre...

    1) le fichier 4 est il une copie du fichier un mais avec le lundi en guichet 0 ?
    2) puisque tu arrives à séparer en fichier distinct, qu'est que tu n'arrives pas à faire ? changer le 1 en 0 ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Oui, le fichier 4 est une copie du fichier 1. et le remplace "guichet1" en "gichet0".
    Le fichier 1 est copié parce que après split, la première ligne contient guichet1. L'emplacement de la chaine guichet1 est fixe. Vous comprenez mieux?

    Citation Envoyé par PadawanInPerl Voir le message
    hello,

    Difficile de te comprendre...

    1) le fichier 4 est il une copie du fichier un mais avec le lundi en guichet 0 ?
    2) puisque tu arrives à séparer en fichier distinct, qu'est que tu n'arrives pas à faire ? changer le 1 en 0 ?

  4. #4
    Membre éclairé Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Par défaut
    Lorsque tu fais la copie, c'est que tu sais déjà que tu as 2 fois le guichet1. (apparemment)...

    Tu pourrais donc plutôt que de recopier la première ligne, l'écrire dans le code ou alors faire simplement un remplacement du 1 par le 0...

    au pire... mais ton code...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Après avoir splitté le document. je réouvre le document splitté à condition que à la ligne 1, ce soit marqué guichet1, sinon je n'ouvre pas le fichier crée. Dans cet exemple précis que j'ai donné, il n'y aura donc qu'un seul fichier qui sera réouvert. Quoi qu'il en soit ce fichier déjà splitté ne sera pas supprimé. Je pense qu'il y a deux solutions, soit je copie le fichier avec guichet1 en première ligne puis je louvre en ne modifiant que la première ligne, soit je lis le document avec guichet 1 ligne par ligne, et je réécris un autre fichier à côté. Mais je ne sais pas comment faire malheureusement. Vous me comprenez?



    Citation Envoyé par PadawanInPerl Voir le message
    Lorsque tu fais la copie, c'est que tu sais déjà que tu as 2 fois le guichet1. (apparemment)...

    Tu pourrais donc plutôt que de recopier la première ligne, l'écrire dans le code ou alors faire simplement un remplacement du 1 par le 0...

    au pire... mais ton code...

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est tous les
    lundi guichet1
    que tu veux transformer en
    lundi guichet0
    ?

    Si c'est bien le cas, inutile de réouvrir le fichier splité, il suffit de le faire "à la volée", lorsque tu écris dans le fichier splité.
    Tu as compris l'exemple de modèle d'algorithme que je t'ai proposé ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est assez simple à réaliser, cela dit, comment veux-tu nommer les différents fichiers ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      while (...) {
        if ($ligne =~ /^lundi/) {
          open F, ">", "fichier".$i++.".txt";
        }
        print F ...;
      }
    Par contre, je n'ai rien compris à cette histoire de modifier le guichet1 en guichet0...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie d'un fichier XML avec modification de valeur d'attribut
    Par CocoRambo dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/07/2007, 10h21
  2. Recherche de fichiers puis copier avec chemin
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 01/06/2007, 12h54
  3. Réponses: 1
    Dernier message: 15/05/2007, 17h55
  4. Réponses: 1
    Dernier message: 02/11/2006, 11h40
  5. Réponses: 2
    Dernier message: 16/06/2005, 15h48

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