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

So zeigen Sie nur verschiedene Zeilen mit diff (bash) an

a.txt:

1;john;125;3
1;tom;56;2
2;jack;10;5

b.txt:

1;john;125;3
1;tom;58;2
2;jack;10;5

Verwenden Sie komm:

comm -13 a.txt b.txt 
1;tom;58;2

Die Kommandozeilenoptionen bis comm sind ziemlich geradlinig:

-1 Spalte 1 unterdrücken (Zeilen, die nur für DATEI1 gelten)

-2 Spalte 2 unterdrücken (Zeilen, die nur für DATEI2 gelten)

-3 Spalte 3 unterdrücken (Zeilen, die in beiden Dateien vorkommen)


Hier ist eine einfache Lösung, die meiner Meinung nach besser ist als diff :

sort file1 file2 | uniq -u

  • sort file1 file2 verkettet die beiden Dateien und sortiert sie
  • uniq -u druckt die eindeutigen Zeilen (die sich nicht wiederholen). Es erfordert eine Vorsortierung der Eingabe.

Mithilfe von Gruppenformatbezeichnern können Sie das Drucken unveränderter Zeilen unterdrücken und nur geänderte Zeilen für geänderte drucken

diff --changed-group-format="%>" --unchanged-group-format="" file1 file2


Angenommen, Sie möchten nur die Zeilen beibehalten, die nur für Datei 2 gelten, können Sie Folgendes tun:

comm -13 file1 file2

Beachten Sie, dass die comm Der Befehl erwartet, dass die beiden Dateien in sortierter Reihenfolge vorliegen.


Linux
  1. So führen Sie einen zeilenweisen Vergleich von Dateien in Linux mit dem Befehl diff durch - Teil II

  2. So führen Sie einen zeilenweisen Vergleich von Dateien in Linux mit dem Befehl diff durch

  3. diff Befehl, um nur die Anzahl der verschiedenen Zeilen zu erhalten

  4. So subtrahieren Sie Zeilen (Zeilen) mit AWK

  5. Wie zeigt man bestimmte Zeilen aus einer Textdatei in Linux an?

So zeigen Sie Cheatsheets für Linux-Befehle mit z

So zeigen Sie den Bash-Verlauf ohne Zeilennummern an

So zeigen Sie Linux-CPU-Informationen mit CPUFetch an

So laden Sie nur Audio mit youtube-dl herunter

Wie kann man die -f-Ausgabe mit Farben nur mit Awk anpassen und den Rest der Ausgabe anzeigen?

Wie bearbeite ich vorherige Zeilen in einem mehrzeiligen Befehl in Bash?