Je veux comparer le fichier 1 avec le fichier 2 et générer un fichier 3 qui contient les lignes du fichier 1 qui ne sont pas présentes dans le fichier 2.
Réponses
Trop de publicités?Diff(1) n'est pas la réponse, mais comm(1) l'est.
NAME
comm - compare two sorted files line by line
SYNOPSIS
comm [OPTION]... FILE1 FILE2
...
-1 suppress lines unique to FILE1
-2 suppress lines unique to FILE2
-3 suppress lines that appear in both files
Alors
comm -2 -3 file1 file2 > file3
Les fichiers d'entrée doivent être triés. S'ils ne le sont pas, triez-les d'abord. Ceci peut être fait avec un fichier temporaire, ou...
comm -2 -3 <(sort file1) <(sort file2) > file3
à condition que votre shell supporte la substitution de processus (bash le fait).
Considérez ceci :
fichier a.txt :
abcd
efgh
fichier b.txt :
abcd
Vous pouvez trouver la différence avec :
diff -a --suppress-common-lines -y a.txt b.txt
La sortie sera :
efgh
Vous pouvez rediriger la sortie dans un fichier de sortie (c.txt) en utilisant :
diff -a --suppress-common-lines -y a.txt b.txt > c.txt
Cela répondra à votre question :
"...qui contient les lignes du fichier 1 qui sont ne sont pas présentes dans le fichier 2".