Vous devez utiliser comm
:
comm -13 first.txt second.txt
fera le travail.
ps. l'ordre du premier et du deuxième fichier dans les questions de ligne de commande.
vous devrez peut-être également trier les fichiers avant :
comm -13 <(sort first.txt) <(sort second.txt)
dans le cas où les fichiers sont numériques ajouter -n
option à sort
.
Cela devrait fonctionner
comm -13 <(sort file1) <(sort file2)
Il semble que le tri -n (numérique) ne puisse pas fonctionner avec comm, qui utilise le tri (alphanumérique) en interne
f1.txt
1
2
21
50
f2.txt
1
3
21
50
21 doit apparaître dans la troisième colonne
#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)
1
2
21
3
21
50
#OK
$ comm <(sort f1.txt) <(sort f2.txt)
1
2
21
3
50
cat f1.txt f2.txt | sort |uniq > file3
grep -Fxv -f first-file.txt second-file.txt
Recherche essentiellement toutes les lignes dans second-file.txt
qui ne correspondent à aucune ligne dans first-file.txt
. Peut être lent si les fichiers sont volumineux.
De plus, une fois que vous avez trié les fichiers (utilisez sort -n
s'ils sont numériques), alors comm
aurait également dû fonctionner. Quelle erreur cela donne-t-il? Essayez ceci :
comm -23 second-file-sorted.txt first-file-sorted.txt