GNU/Linux >> Tutoriels Linux >  >> Linux

Comparaison de deux listes non triées sous Linux, listant l'unique dans le deuxième fichier

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

Linux
  1. Copier des fichiers dans le terminal Linux

  2. Renommer un fichier dans le terminal Linux

  3. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  4. Quel est le but du fichier .bashrc sous Linux

  5. Comment puis-je voir du en Go au lieu de Mo sous Linux ?

Introduction au système de fichiers Linux

Commande ls sous Linux pour lister les fichiers

Comment limiter la profondeur de la liste récursive des fichiers sous Linux

10 exemples utiles de la commande Sort sous Linux

Sécurisez Linux avec le fichier Sudoers

Comparer deux fichiers dans un terminal Linux