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 :

comparaison deux fichiers


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut comparaison deux fichiers
    Bonjour,
    Je suis débutante en perl.
    Je veux comparer deux fichier,contenant deux tableaux de longueur différents.
    je veux tester si le numéro de la première colonne et le numéro de deuxième colonne du premier fichier égales respectivement au numéro de la première colonne et la deuxième colonne du deuxième fichier; Si oui j`écris la troisième colonne des deux tableaux, sinon
    voila un exemple pour comprendre:

    exemple de fichier:
    fichier 1:
    *********
    10;20;P1x
    25;30;P2x
    60;75;p3x
    ...
    *********
    fichier 2 :
    ************
    10;20;P1y
    23;30;P2y
    44;50;p3y
    ...
    *********
    A partir de ces deux fichier je veux avoir un troisième fichier comme ceci:

    10;20;P1x;P1y
    23;30;---;P2y
    25;30;P2x;---
    44;50;---;p3y
    60;75;p3x;---
    Quelqu’un peut m`aider s`il vous plait

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Bonjour,
    voici une solution possible (elle vaut ce qu'elle vaut ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    #Variables
    my (@contenu_fic1,@contenu_fic2,@contenu_fic3);
    my (@ligne_fic1,@ligne_fic2);
    my ($taille_fic1,$taille_fic2,$taille_min);
     
    #Recuperation du contenu du fichier 1 dans le tableau @contenu_fic1
    open(FIC1,"<fichier1.txt") or die ("Impossible de lire fichier1.txt\n");
    	while(<FIC1>)
    	{
    	    chomp;
    	    push(@contenu_fic1,$_);    
    	}
    close FIC1;
     
    #Recuperation du contenu du fichier 2 dans le tableau @contenu_fic2
    open(FIC2,"<fichier2.txt") or die ("Impossible de lire fichier2.txt\n");
    	while(<FIC2>)
    	{
    	    chomp;
    	    push(@contenu_fic2,$_);   
    	}
    close FIC2;
     
    #Determination de la taille du plus petit des deux tableaux
    $taille_fic1 = scalar(@contenu_fic1);
    $taille_fic2 = scalar(@contenu_fic2);
    if($taille_fic1<$taille_fic2){$taille_min = $taille_fic1}
    else {$taille_min = $taille_fic2}
     
    #Calcul du contenu du fichier resultat, ligne par ligne
    for(my $i=0;$i<$taille_min;$i++)
    {
        #On separe les valeurs de la ligne (valeurs separees par un ";")
        @ligne_fic1=split(";",$contenu_fic1[$i]);
        @ligne_fic2=split(";",$contenu_fic2[$i]);
     
        #Si les valeurs des colonnes 1 et 2 sont les memes pour les deux fichiers
        if($ligne_fic1[0]==$ligne_fic2[0] && $ligne_fic1[1]==$ligne_fic2[1])
        {
    	$contenu_fic3[$i]="$ligne_fic1[0];$ligne_fic1[1];$ligne_fic1[2];$ligne_fic2[2]\n";
        }
        #Sinon
        else
        {
    	$contenu_fic3[$i]="$ligne_fic1[0];$ligne_fic1[1];---;$ligne_fic2[2]\n".
    			  "$ligne_fic2[0];$ligne_fic2[1];$ligne_fic1[2];---\n";
        }
    }
     
    #Ecriture du tableau @contenu_fic3 dans un fichier "fichier3.txt"
    open (FIC3,">fichier3.txt") or die ("Impossible d'ecrire sur fichier3.txt\n");
    print FIC3 @contenu_fic3;
    close FIC3;
    Redis si ça marche ou si tu ne comprends pas quelque chose!

  3. #3
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    mokochan, quelque chose me dit que ton algorithme ne fonctionnera pas si les deux fichiers sont presque similaires, mais pas synchrones (certaines lignes manquantes dans l'un ou l'autre). En gros, il produirait des lignes en double contenant les mêmes colonnes 1 et 2, mais avec une fois la 3e colonne de gauche à -- et une autre fois à la 3e colonne de droite à --.

    Je pose d'abord des questions et je propose une autre solution :
    - la taille des fichiers est-elle compatible avec leur lecture complète en mémoire ?
    - les colonnes 1 et 2 sont-elle triées ? et/ou faut-il trier la sortie dans un ordre particulier (genre clé1 = colonne1, clé2 = colonne2).

    La solution que je proposerai sera basée sur les tables de hachage.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Effectivement Philou67430, je suis partie du principe qu'il n'y avait pas de lignes manquantes. De plus si l'un des fichiers est plus grand que l'autre, les lignes "en trop" ne sont pas traitées.
    hajarita, pourrais-tu nous donner plus de précisions? Peut-il y avoir des lignes manquantes? Que faut-il faire si les deux fichiers n'ont pas le même nombre de données?

  5. #5
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    D'après son exemple, il peut y avoir des lignes manquantes.

    Allé, voici une solution qui est en fait une simplification de ce que j'ai déjà proposé ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use feature qw(:5.10);
     
    open my $F1, "<", "fic1.txt" or die "Can't open fic1.txt: $!";
    open my $F2, "<", "fic2.txt" or die "Can't open fic1.txt: $!";
    my %data;
    # Lecture du premier fichier
    while (defined(my $line = <$F1>)) {
      chomp($line);
      my @col = split /\s*;\s*/, $line;
      my $key = "$col[0];$col[1]";
      push @{$data{$key}}, $col[2];
    }
     
    # Lecture du deuxième fichier
    while (defined(my $line = <$F2>)) {
      chomp($line);
      my @col = split /\s*;\s*/, $line;
      my $key = "$col[0];$col[1]";
      push @{$data{$key}}, "--" if !exists $data{$key};
      push @{$data{$key}}, $col[2];
    }
    # Compléter les entrées présente dans le premier fichier
    # mais pas dans le deuxième fichier
    foreach my $key (grep @{$data{$_}} != 2, keys %data) {
      push @{$data{$key}}, "--";
    }
     
    # Ecrire le résultat
    foreach my $key (sort keys %data) {
      say join ";", $key, @{$data{$key}};
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Je vous remercie pour vos repense .Philou67430 et mokochan
    Mes deux fichiers ont une taille differentes(un des deux fichiers contients plus de lignes que l`autre)
    En fait, pour plus de precision: mes deux fichier corespondent aux resultats d`annotation d`une sequence ,avec deux logiciesl differents
    et les colonnes corespondent :

    start(cds) end(cds) product

    Je sais pas Si vous vous etes des bioinformaticiens??
    Sinon, pour vous expliquer plus.
    C`est comme par exemple ,vous avez une droite numeroter et vous demandez a deux personnes de couper cette droite a plusieurs parties
    voici notre droite : 1 2 3 4 5 6 7 8 9 10 11 20 ...
    par exemple la premiere personne va la couper de cette facon
    start end product
    1 3 P1X
    4 6 P2X
    7 10 p3X
    15 20 P4X

    et la 2 eme personne aura comme resultat cela:
    start end product
    1 3 P1Y
    2 6 P2Y
    8 12 P3Y
    16 20 P4X
    21 30 P5X

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Je vous remercie Philou67430
    Ton script marche très bien
    Merciiiiiiiiiiiiii

  8. #8
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Je ne suis pas bioinformaticien, juste informaticien, et féru de perl.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Vous pouvez m'expliquer cette ligne la s'il vous plait (pourquoi != 2)

    foreach my $key (grep @{$data{$_}} != 2, keys %data) {
    push @{$data{$key}}, "--";
    }

  10. #10
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Lorsque l'on lit le premier fichier, on remplit le tableau @{$data{$key}} pour les $key contenues dans ce fichier.
    Lorsque l'on lit le deuxième fichier, on remplit le tableau @{$data{$key}} pour les $key contenues dans le deuxième fichier. Dans ce deuxième fichier, il peut y avoir des clés qui manquer certaines clés du premier fichier. Pour ces clés, on n'ajoute donc pas de nouvel valeur dans ce tableau @{$data{$key}}. La tableau, dans ce cas, à une taille < 2, d'où le != 2. Dans ce cas, il faut ajouter l'élément manquant "--" en dernière position du tableau (correspondant à l'absence de cette clé dans le premier fichier).
    C'est ce que dit en substance le commentaire qui précède l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Compléter les entrées présente dans le premier fichier
    # mais pas dans le deuxième fichier
    PS : merci de mettre les balises [CODE] (icône ).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut Autre comparaison
    Bonjour Philou67430,
    Merci pour votre explication.
    Au fait, je veux faire une autre comparaison entre deux fichier (deux tableaux):
    fichier 1: (j`ai d`autres colonnes mais C`est ces trois la qui m`intéresse. C`est le fichier le plus long)
    #####################
    start end annotation
    1 40 P1
    50 68 P2
    120 245 P3
    356 441 p4
    ...
    #################
    fichier 2: (j`ai plusieurs colonnes aussi mais C`est ces deux la qui m`intéresse)
    #################
    s e
    44 48
    56 90
    100 200
    240 390
    ...
    ################
    je veux généré un 3eme fichier qui doit être comme cela
    s e start end annotation
    44 48 NA
    56 90 50 68 P2
    100 200 120 245 P3
    240 390 120 245 P3
    356 441 p4
    ...

    Donc en gros, je veux savoir Si les deux chiffres du fichier 2 se trouve entre (ou égale) aux deux chiffres de fichier1.(les deux fichiers n`ont pas la même taille)
    J`ai fait ce code, mais il me récupéré pas tous les informations
    ##############################################

    #!/usr/bin/perl

    use strict;

    my $file1='./Lc_ani.csv';
    my $file2='./Annotation.csv';
    my $file3='./RESULTAT.csv';

    open(B, $file2) || die "Can not open file '$file2'";
    open(C, ">$file3") || die "Can not open file '$file3'";

    while(my $ligne1=<B>){

    my $ligne2;
    chomp $ligne1;
    my @table1 = split (/;/, $ligne1);

    open(A, $file1) || die "Can not open file '$file1'";
    while ($ligne2=<A>){
    chomp $ligne2;

    my @table2 = split (/,/, $ligne2);

    if (( $table2[9] <= $table1[1] && $table2[9] >= $table1[0] )) {

    if ( $table2[10] <= $table1[1] && $table2[10] >= $table1[0] ){

    print C "$table2[9];$table2[10];$table1[0];$table1[1];$table1[3]\n";
    }
    else{
    print C "$table2[9];$table2[10];$table1[0];$table1[1];NA\n";
    }
    }


    }
    close A;
    }
    close B;
    close C;
    ###################################################
    Vous pouvez m`aider s`il vous plait
    Merci d avance

  12. #12
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Merci de mettre les balises de CODE autour du code.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Oui

    #############################################################

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #!/usr/bin/perl
     
    use strict;
    #mes deux fichiers à comparer et le fichier dont je vais ecrire le resultat
    my $file1='./Lc_ani.csv';
    my $file2='./Annotation.csv';
    my $file3='./RESULTAT.csv';
     
    #j'ouvre les fichier 
    open(A, $file1) || die "Can not open file '$file1'";
    open(B, $file2) || die "Can not open file '$file2'";
    open(C, ">$file3") || die "Can not open file '$file3'";
     
    #tant que mon fichier 2 conteint des lignes
    while(defined(my $ligne1=<B>)  || (defined(my $ligne2=<A>))){
     
    chomp $ligne1;
    chomp $ligne2;
     
    my @table1 = split (/;/, $ligne1);
    my @table2 = split (/,/, $ligne2);
     
    #Pour la comparaison 
    #je dis:
    # Si le premier chiffre de mon deuxieme fichier se trouve entre les deux valeurs du premier fichier
    if (( $table2[9] <= $table1[1] && $table2[9] >= $table1[0] )) {
     
    # Si le deuxieme chiffre de mon deuxieme fichier se trouve entre les deux valeurs du premier fichier
    if ( $table2[10] <= $table1[1] && $table2[10] >= $table1[0] ){
     
    #ecrire le resultat dans le 3eme fichier comme cela
    print C "$table2[9];$table2[10];$table1[0];$table1[1];$table1[3]\n";
    }
    #Sinon(cad que mes deux valeur du deuxieme tableaux ne se trouvent nul part entre les deux valeur du premier tableau)
    else{
    #ecrire le resultat comme cela (les deux chiffres de deuxieme tableau avec NA dans la 5eme colonne)
    print C "$table2[9];$table2[10];$table1[0];$table1[1];NA\n";
    }
    }
     
     
    }
    close A;
    close B;
    close C;
    ##############################################"
    Non, mes deux fichiers ne sont pas synchrones,

  14. #14
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Toujours pas de balise (icone ).
    Par ailleurs, tu peux simplement éditer ton message, tu n'es pas obligée d'en créer un nouveau pour faire cette opération.

    Pour ce qui est de ton script :
    - si tu veux lire en parallèle deux fichiers, tu ne dois pas ouvrir le 2e fichier dans la boucle qui lit le premier... sinon, tu liras toujours la première ligne du 2e fichier. Il faut les ouvrir en même temps, et avancer en parallèle sur les deux.
    - tes deux fichiers qui doivent êtres combinés sont-ils "synchrones" c'est à dire que la ligne 1 du fichier1 correspond à la ligne 1 du fichier2, et ainsi de suite ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Donc voila ,j'ai bien mis mon code entre la balise [CODE]
    et tout à fait, mes deux fichiers ne sont pas synchrones

  16. #16
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Tu n'as cependant pas corrigé le open A...
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  17. #17
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Je fais comme ceci?
    j'ouvre les deux fichier
    et puis cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(defined(my $ligne1=<B>)  || (defined(my $ligne2=<A>))){
    je viens de changer dans le code en haut, mais ça marche pas bien encore

  18. #18
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Non, si les fichiers ne sont pas synchrones, c'est nettement plus compliqué. Je n'aurais sans doute pas le temps de regarder avec lundi prochain. Notamment, il faut que je comprenne comment les deux fichiers sont synchronisés (sur quel critère).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  19. #19
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Non, si les fichiers ne sont pas synchrones, c'est nettement plus compliqué. Je n'aurais sans doute pas le temps de regarder avec lundi prochain. Notamment, il faut que je comprenne comment les deux fichiers sont synchronisés (sur quel critère).
    Voila les deux fichiers:
    FICHIER 1: FICHIER2
    start; end;product s;e
    1;10;p1 30;44
    15;45;p2 60 ;75
    90;120; p3 92;320
    300;360;p4 ...
    ...
    (j'ai 2589 lignes dans ce tableau)(j'ai 187 lignes dans ce tableau)
    Fichier resultat:
    s;e;start;end;product
    30;44;15;45;p1
    60;75;;;NA
    92;32;90;120;p3
    ;;300;360;p4

  20. #20
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Non, si les fichiers ne sont pas synchrones, c'est nettement plus compliqué. Je n'aurais sans doute pas le temps de regarder avec lundi prochain. Notamment, il faut que je comprenne comment les deux fichiers sont synchronisés (sur quel critère).
    Bonjour

    Voila les deux fichiers:
    FICHIER 1:
    start; end;product
    1;10;p1
    15;45;p2
    90;120; p3
    300;360;p4
    ...
    (j'ai 2589 lignes dans ce tableau)
    FICHIER2
    s;e
    30;44
    60 ;75
    92;320
    ...
    (j'ai 187 lignes dans ce tableau)
    Fichier resultat:
    s;e;start;end;product
    30;44;15;45;p1
    60;75;;;NA
    92;32;90;120;p3
    ;;300;360;p4

    Si on considere les chiffres de fichier1 comme un interval (start-end), le but c'est de voir si les chifres de fichier2 se trouvent dans un intervalle de fichier1,si oui on ecris la ligne defichier1 a coté de la ligne de fichier2,et comme vous allez voir dans le fichier resultat, on peut avoir deux lignes ou plus dans le fichier1 qui correspondent à une ligne dans le fichier2(comme l'exemple de la ligne 3 du fichier2:
    92;32;90;120;p3
    ;;300;360;p4)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comparaison deux fichiers avec cobol
    Par Babylone159 dans le forum Cobol
    Réponses: 5
    Dernier message: 03/09/2012, 12h36
  2. comparaison de deux fichiers
    Par john123 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 17/03/2007, 16h38
  3. Comparaison de deux fichiers EXCEL
    Par meufeu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2006, 22h56
  4. comparaison de deux fichiers textes
    Par chmaichel dans le forum Delphi
    Réponses: 1
    Dernier message: 28/07/2006, 11h35
  5. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05

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