Pas sûr diff
seul peut le faire, mais vous pouvez toujours utiliser la puissance d'autres utilitaires GNU pour vous aider.
diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'
Il fait le diff, puis sélectionne uniquement les lignes qui commencent par '-' - celles-ci sont modifiées et ont des valeurs du fichier diffa.txt, puis sed
supprimez simplement ces signes "-".
Modifier : Après quelques expériences avec diff
, il semble que la commande ci-dessous produise ce que vous voulez :
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
Une méthode plus simple consiste à utiliser comm
utilitaire linux (il a besoin d'un fichier trié pour l'entrée). Il écrit sur la sortie standard :
-
lignes uniques pour diffa.txt
-
lignes uniques pour diffb.txt
-
lignes communes
et vous pouvez supprimer chacun d'eux par le paramètre 1,2 ou 3 en conséquence. Donc, dans votre cas, cela ressemblera à ceci :
comm -23 diffa.txt diffb.txt
Il supprime les lignes uniques pour diffb.txt, les lignes communes et imprime les lignes uniques uniquement pour diffa.txt
Source de : https://www.tutorialspoint.com/unix_commands/comm.htm
Je voudrais mentionner que comm
attend des fichiers d'entrée triés et rapporte donc des résultats différents de diff
.
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
est universel. Bravo à @vava