diff comparer en cli linux

diff et cmp (de linux-france)

La commande diff donne les modifications à apporter au premier fichier spécifié pour qu'il ait le même contenu que le second.
diff pass.tmp /etc/passwd affichera les modifications à apporter au fichier pass.tmp pour qu'il ait le même contenu que le fichier /etc/passwd.
Source: http://www.linux-france.org/article/memo/node12.html

cmp compare deux fichiers et vous dit quels numéros de ligne sont différents.

Sortie de diff :

  • 3a4,7 indique que après la troisième ligne du premier fichier doivent être incrustées les lignes 4 à 7 du second. Attention, les messages suivants indiqueront les numéros des lignes sans tenir compte des incrustations qui auront éventuellement été apportées.
  • 5,8d4 indique que les lignes 5 à 8 du premier fichier doivent être supprimées, car elles n'existent pas derrière la ligne 4 du second.
  • 10,15c12,17 indique que les lignes 10 à 15 du premier fichier doivent être intégralement changées contre les lignes 12 à 17 du second.

Dans les 3 cas de figure, les lignes précédées du signe ``<'' se rapportent au premier fichier, et les lignes précédées du signe ``>'' se rapportent au second.

L'option -b permet de ne pas tenir compte des espaces lors de la comparaison des lignes.

La commande cmp permet de comparer deux fichiers, et d'afficher le nombre de caractères et de lignes qui diffèrent. L'option -l affiche sur trois colonnes le numéro de ligne où il y a une différence et les valeurs ASCII en base huit des caractères différents.

Syntaxe cmp [options..] file1 file2
- c     Le résultat différenciant les octets comme des caractères.
- l     Imprimer le numéro d'octet (décimal) et les valeurs d'octets différentes (octal) pour chaque différence.
- s     N'imprime rien pour les fichiers différents, retourne un statut de sorti seulement.

Ex

diff fic1 fic2 | grep \<
diff fic1 fic2 | grep \>   fic2 - fic1

Retirer les < et > si avec grep

Comparer deux résultats de fichiers différents en octets comme caractères : cmp -c file1.php file2.php
compare file1.php avec file2.php et affiche: file1.php file2.php differ: byte 35, line 3 is 151 i 15

Pour les nuls :)

diff est une commande qui compare le contenu de deux fichiers, à tapper dans un terminal. En bleu foncé c'est le "prompt" qui vous indique où vous êtes (donc à ne pas saisir).
Créer 2 fichiers, qui contiennent chacun 2 lignes, et qui se ressemblent: l'un nommé fic1 contient a1 sur la 1ere ligne et sur la suivante a2 ; fic2 a aussi 2 lignes: la 1ere est blanche (vide) et la seconde contient a2

Faire dans cet ordre: diff fic1 fic2    puis    diff fic1 fic2 | grep \<     montre les <a 

user@nom-pc:~/bin/test$ diff fic1 fic2
1c1
< a1
---
>
user@nom-pc:~/bin/test$ diff fic1 fic2 | grep \<
< a1

alors que   diff fic1 fic2 | grep \>   montre >

un ex utile pour drupal

autre ex (pour maj de www vers drupal 7.12) sachant que -u par 3 lignes et -r récursivement dans les dossiers

diff –ru www drupal-7.12

 

Plus

http://man.cx/diff%281%29/fr

Avec interface fraphique: http://doc.ubuntu-fr.org/meld
https://www.lifewire.com/compare-two-text-files-linux-3861434

http://linux.about.com/od/linux101/fl/patch-Linux-Command-Unix-Command.htm

http://www.thegeekstuff.com/2010/06/linux-file-diff-utilities/

SEE ALSO
       wdiff (word per word), cmp, diff3 (compare 3 fichiers à la fois, ligne par ligne), sdiff (Side-by-side merge of differences between FILE1 and FILE2), patch qui applique un diff sur un fichier (patch [options] [originalfile [patchfile]] ou patch -pnum <patchfile)