GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vergleichen von zwei unsortierten Listen in Linux, Auflisten der eindeutigen in der zweiten Datei

Sie müssen comm verwenden :

comm -13 first.txt second.txt

wird die Arbeit erledigen.

p.s. Reihenfolge der ersten und zweiten Datei in der Befehlszeile ist wichtig.

Außerdem müssen Sie die Dateien möglicherweise vorher sortieren:

comm -13 <(sort first.txt) <(sort second.txt)

Falls Dateien numerisch sind, fügen Sie -n hinzu Option zu sort .


Das sollte funktionieren

comm -13 <(sort file1) <(sort file2)

Es scheint, dass sort -n (numeric) nicht mit comm arbeiten kann, das sort (alphanumeric) intern verwendet

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 sollte in der dritten Spalte erscheinen

#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

Sucht grundsätzlich nach allen Zeilen in second-file.txt die mit keiner Zeile in first-file.txt übereinstimmen . Kann langsam sein, wenn die Dateien groß sind.

Sobald Sie die Dateien sortiert haben (verwenden Sie sort -n wenn sie numerisch sind), dann comm sollte auch funktionieren. Welchen Fehler gibt es? Versuchen Sie Folgendes:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Kopieren Sie Dateien im Linux-Terminal

  2. Benennen Sie eine Datei im Linux-Terminal um

  3. Verschieben Sie Dateien im Linux-Terminal

  4. Was ist der Zweck der .bashrc-Datei in Linux

  5. sort-Befehlsbeispiele in Linux

Einführung in das Linux-Dateisystem

ls-Befehl in Linux zum Auflisten von Dateien

So begrenzen Sie die Tiefe der rekursiven Dateiauflistung in Linux

10 Nützliche Beispiele für den Sort-Befehl in Linux

Sichern Sie Linux mit der Sudoers-Datei

Vergleichen von zwei Dateien im Linux-Terminal