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

Extrahieren eindeutiger Werte zwischen 2 Sätzen/Dateien

Verwenden einiger weniger bekannter Dienstprogramme:

sort file1 > file1.sorted
sort file2 > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Dadurch werden Duplikate ausgegeben, wenn also 1 3 vorhanden ist in file1 , aber 2 in file2 , dies wird immer noch 1 3 ausgeben . Wenn Sie dies nicht möchten, leiten Sie die Ausgabe von sort weiter bis uniq bevor es in eine Datei geschrieben wird:

sort file1 | uniq > file1.sorted
sort file2 | uniq > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Es gibt viele Dienstprogramme im Paket GNU coreutils, die alle Arten von Textmanipulationen ermöglichen.


$ awk 'FNR==NR {a[$0]++; next} !($0 in a)' file1 file2
6
7

Erklärung, wie der Code funktioniert:

  • Wenn wir an Datei1 arbeiten, verfolgen Sie jede Textzeile, die wir sehen.
  • Wenn wir an Datei2 arbeiten und den Zeilentext nicht gesehen haben, drucken Sie ihn aus.

Erläuterung der Einzelheiten:

  • FNR ist die Datensatznummer der aktuellen Datei
  • NR ist die aktuelle Gesamtdatensatznummer aus allen Eingabedateien
  • FNR==NR ist nur wahr, wenn wir Datei1 lesen
  • $0 ist die aktuelle Textzeile
  • a[$0] ist ein Hash, bei dem der Schlüssel auf die aktuelle Textzeile gesetzt ist
  • a[$0]++ verfolgt, dass wir die aktuelle Textzeile gesehen haben
  • !($0 in a) ist nur wahr, wenn wir den Zeilentext nicht gesehen haben
  • Drucken Sie die Textzeile, wenn das obige Muster wahr zurückgibt, dies ist das Standardverhalten von awk, wenn keine explizite Aktion gegeben wird

Linux
  1. Ssh – Kopieren geschützter Dateien zwischen Servern in einer Zeile?

  2. Gemeinsame Linien zwischen zwei Dateien?

  3. Was ist Awk ‘{print $1+0.45 “ ” $2 “ ” $3 }’ File1> File2?

  4. Extrahieren von Text aus MS-Word-Dateien in Python

  5. Suche nach eindeutigen Werten in einer Datendatei

Installieren Sie Dropbox, um Dateien zwischen Linux und Windows auszutauschen

Übertragen Sie Dateien und Ordner zwischen Computern mit Croc

Synchronisieren Sie Dateien zwischen mehreren Systemen mit Syncthing

Teilen Sie Dateien zwischen Linux-Desktops mit Warpinator

Übertragen Sie Dateien zwischen beliebigen Geräten mit Piping Server

Freigabe von Dateien zwischen Linux Mint und Windows 10