Re: différence entre 2 fichiers

Top Page

Reply to this message
Author: anne.guilde@free.fr
Date:  
To: guilde
CC: ML Guilde
Subject: Re: différence entre 2 fichiers
Le 12/06/2018 à 16:34, nt.guilde@??? a écrit :
>> J'ai 2 gros fichiers.
>> (...)
>> J'aimerais trouver les nouvelles lignes, les lignes modifiées et les lignes
>> supprimées.
>
> comm [OPTION]... FILE1 FILE2


oui oui, c'est ce que j'ai mis dans mon script.
Pas bien réussi avec diff pour avoir une sortie claire.

Il y a les options 1 2 et 3

comm -1 -2 -3 -12 -13 -23 ...

J'ai dû mal à savoir ce que font ces options exactement... ;)

----
# man comm
...
DESCRIPTION
        Comparer les fichiers triés FICHIER1 et FICHIER2 ligne par ligne.


        Sans  option, la sortie se fait sur 3 colonnes. La première 
colonne contient les lignes présentes uniquement dans le FICHIER1, la 
seconde contient les lignes présentes uniquement
        dans le FICHIER2, et la troisième contient les lignes communes 
aux deux fichiers.


        -1     supprimer la première colonne (les lignes présentes 
uniquement dans le FICHIER1)


        -2     supprimer la deuxième colonne (les lignes présentes 
uniquement dans le FICHIER2)


        -3     supprimer la troisième colonne (les lignes qui 
apparaissent dans les 2 fichiers)


        --check-order
               vérifier que l'entrée est triée, même si toutes les 
lignes en entrée peuvent être appairées


        --nocheck-order
               ne pas vérifier que l'entrée est bien triée


        --output-delimiter=CHAÎNE
               séparer les colonnes avec CHAÎNE


        --help Afficher l'aide-mémoire et quitter


        --version
               Afficher le nom et la version du logiciel et quitter


        Notez que les comparaisons respectent les règles indiquées par « 
LC_COLLATE ».


EXEMPLES
        comm -12 fichier1 fichier2
               N'afficher que les lignes présentes à la fois dans 
fichier1 et fichier2.


        comm -3 fichier1 fichier2
               Afficher les ligne se trouvant dans fichier1 et pas dans 
fichier2, et inversement.
...
----


Pas très clair.

https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html#comm-invocation

=>

This option is a GNU extension. Portable scripts should use wc to get
the totals, e.g. for the above example files:

$ comm -23 file1 file2 | wc -l    # number of lines only in file1
1
$ comm -13 file1 file2 | wc -l    # number of lines only in file2
2
$ comm -12 file1 file2 | wc -l    # number of lines common to both files
4


voilà pour les options pour comm

-1 les lignes qui sont communes aux 2 fichiers et les lignes qui se
trouvent seulement dans le fichier 2
-2 les lignes qui sont communes aux 2 fichiers et les lignes qui se
trouvent seulement dans le fichier 1
-3 les lignes qui se trouvent seulement dans le fichier 1 et les lignes
qui se trouvent seulement dans le fichier 2

-123 il n'y a plus rien, aucune ligne

Si je n'ai rien compris, merci de corriger

Anne