133 votes

Comment comparer deux fichiers

En gros, ce que je veux faire, c'est comparer deux fichiers par ligne et par colonne 2. Comment pourrais-je y parvenir ?

Fichier_1.txt :

User1 US
User2 US
User3 US

Fichier_2.txt :

User1 US
User2 US
User3 NG

Output_File :

User3 has changed

152voto

Mitch Points 4387

Regardez dans le diff commande. C'est un bon outil, et vous pouvez tout lire à son sujet en tapant man diff dans votre terminal.

La commande que vous voulez faire est diff File_1.txt File_2.txt qui affichera la différence entre les deux et devrait ressembler à ceci :

enter image description here

Une remarque rapide sur la lecture de la sortie de la troisième commande : Les 'flèches' ( <> ) font référence à la valeur de la ligne dans le fichier de gauche ( < ) contre le bon fichier ( > ), le fichier de gauche étant celui que vous avez saisi en premier sur la ligne de commande, dans ce cas-ci File_1.txt

De plus, vous pouvez remarquer que la 4ème commande est diff ... | tee Output_File ce tuyau les résultats de diff en un tee qui place ensuite la sortie dans un fichier, afin que vous puissiez l'enregistrer pour plus tard si vous ne voulez pas tout voir sur la console à ce moment précis.

47voto

Achu Points 20537

Ou vous pouvez utiliser Meld Diff

Meld vous aide à comparer des fichiers, des répertoires et des versions contrôlées. version. Il permet la comparaison bidirectionnelle et tridirectionnelle de fichiers et de répertoires. répertoires, et prend en charge de nombreux systèmes de contrôle de version populaires.

Installez en exécutant :

sudo apt-get install meld

Votre exemple :

enter image description here

Comparez le répertoire :

enter image description here

Exemple avec plein de texte :

enter image description here

32voto

Mr. S Points 321

Vous pouvez utiliser vimdiff .

Exemple :

vimdiff  file1  file2

23voto

Mike Reardon Points 331

Pour info, j'aime bien ce que j'obtiens avec les sorties côte à côte de diff.

diff -y -W 120 File_1.txt File_2.txt

donnerait quelque chose comme :

User1 US                            User1 US
User2 US                            User2 US
User3 US                          | User3 NG

12voto

Maythux Points 77506

Vous pouvez utiliser la commande cmp :

cmp -b "File_1.txt" "File_2.txt"

La sortie serait

a b differ: byte 25, line 3 is 125 U 116 N

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X