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 GNU Discussion :

Comparer et compter fichiers csv


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut Comparer et compter fichiers csv
    Bonjour à tous,

    Voila j'ai besoin d'un coup de main, je m'explique, je dispose de deux fichiers csv :
    Code fichier1.csv : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    j1;a1;
    j2;a2;
    j3;a3;
    j4;a4;
    j5;a5;
    Code fichier2.csv : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    j1;b1;
    j3;b3;
    j4;b4;
    j5;b5;
    j6;b6;
    j7;b7;
    J'aimerai un script qui va me permettre de comparer ces deux fichiers par rapport aux premiers éléments ( j1, j2, j3 ...) et me retourner 3 fichiers.

    retour1.csv ==> tout les éléments correspondants dans fichier1.csv et fichier2.csv avec les identifiants correspondants au même j (exemple j1;a1; = j1;b1; )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat retour1.csv
    j1;a1;b1;
    j3;a3;b3;
    j4;a4;b4;
    j5;a5;b5;
    retour2.csv ==> tout les éléments ne correspondants pas dans les deux fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat retour2.csv
    j2;a2;
    j6;b6;
    j7;b7;
    retour3.csv ==> un fichier avec le total du fichier1.csv analysés ainsi que du fichier2.csv et le total des deux retours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat retour3.csv
    fichier1.csv : 5
    fichier2.csv : 6
    retour1.csv : 4
    retour2.csv : 3
    Voila n’hésitez à me demander plus d'info si cela n'est pas claires.

    Merci de votre aide par avance et surtout si vous parvenez à me débloquer parce que la je nage grave.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Voici une console :

    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
    $ cat j1.csv
    j1;a1
    j2;a2
    j3;a3
    j4;a4
    j5;a5
    $ cat j2.csv
    j1;b1
    j3;b3
    j4;b4
    j5;b5
    j6;b6
    j7;b7
    $ awk 'BEGIN{FS=";";OFS=FS;} (FNR==NR){a[$1]=$2;next;} {vu[$1]=1; if (a[$1]!="") print $1,a[$1],$2,"" >"retour1.csv"; else print $0 >"retour2.csv";} END{for (i in a) if (vu[i]!=1) print i,a[i] >"retour3.csv";}' j1.csv j2.csv                              
    $ cat retour1.csv
    j1;a1;b1;
    j3;a3;b3;
    j4;a4;b4;
    j5;a5;b5;
    $ cat retour2.csv                                                                                                     
    j6;b6
    j7;b7
    $ cat retour3.csv                                                                                                     
    j2;a2
    $
    Il n'y a dans ce script que du classique. N'hésite pas à te reporter au manuel gawk (gawk manual) sur internet pour comprendre.

    PS: ce n'est pas ta question, mais c'est ma réponse.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    Des que je rentre je testerai ça. Merci pour l'info 😁 sa me désole de ne pas y avoir pensé. Pourtant j'en ai essayé des lignes avec awk... Ça me récupérais les bonnes données mais souvent ça zappait les premières car je suis sur du fichier avec plusieurs milliers de lignes.
    Et une autre question si j'ai des j avec j10 j100 j1000 ça ne va pas les mettre dans le même sac sa va bien les différencier ?
    Sinon encore merci.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    les deux premiers points sont facilement réalisables avec join.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    Salut,

    Merci Flodelarab.

    Cela marche parfaitement ça fait ce que je veux après quelques modif bien évidement ainsi que pour le comptage des lignes du fichier.

    Je vous remercie de la rapidité de réponse et de laide apporté.


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

Discussions similaires

  1. Compter les lignes d'un fichier CSV à partir d'une ligne
    Par miniRoshan dans le forum Général Java
    Réponses: 6
    Dernier message: 03/06/2010, 11h16
  2. Réponses: 4
    Dernier message: 02/06/2010, 17h23
  3. Compter les lignes du fichier CSV
    Par miniRoshan dans le forum Général Java
    Réponses: 5
    Dernier message: 28/05/2010, 11h37
  4. Comparer le contenu d'une table avec un fichier csv
    Par cdo22 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/11/2008, 18h35
  5. [CSV] Compter les lignes d’un fichier csv
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 11h16

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