Verbinden und Aufteilen
100%

Text-Fu · Lektion 11

Verbinden und Aufteilen

Lerne, zwei sortierte Textdateien über einen Schlüssel zu verbinden und eine Datei in benannte Teile aufzuteilen.

Die Befehle join und split lösen unterschiedliche Aufgaben der Dateiverarbeitung. join kombiniert zusammengehörige Datensätze aus zwei sortierten Texteingaben, während split eine Eingabe in eine Folge kleinerer Dateien aufteilt.

Zwei Dateien über ihr erstes Feld verbinden

Standardmäßig vergleicht join das erste durch Leerraum getrennte Feld in genau zwei Eingabedateien. Betrachte diese bereits sortierten Dateien.

people.txt:

1 John
2 Jane
3 Mary

surnames.txt:

1 Doe
2 Doe
3 Sue

Verbinde Datensätze mit gleichen Schlüsselfeldern:

$ join people.txt surnames.txt
1 John Doe
2 Jane Doe
3 Mary Sue

Die Ausgabe enthält den gemeinsamen Schlüssel einmal, gefolgt von den übrigen Feldern der ersten und zweiten Datei. join verarbeitet jeweils zwei Dateien; drei gewöhnliche Dateioperanden bilden keine relationale Drei-Wege-Verknüpfung.

Welche Datensätze kombiniert join first.txt second.txt ohne Feldoptionen?

Die Verknüpfungsschlüssel sortieren

Jede Eingabe muss nach ihrem Verknüpfungsfeld mit kompatiblen Vergleichsregeln geordnet sein. Bereite für das standardmäßige Feld 1 Kopien mit sort -k 1,1 vor:

$ LC_ALL=C sort -k 1,1 people-raw.txt > people.txt
$ LC_ALL=C sort -k 1,1 surnames-raw.txt > surnames.txt
$ LC_ALL=C join people.txt surnames.txt

Wenn Sortierung und Verknüpfung dieselbe Locale verwenden, bleiben die Kollationsregeln konsistent. Leite eine Sortierung nicht zurück in ihren eigenen Eingabepfad, da die Shell die Datei zuvor leeren würde.

Welche Vorbereitung benötigt join normalerweise für eine zuverlässige Zuordnung?

Andere Verknüpfungsfelder auswählen

Mit -1 FIELD legst du den Schlüssel der ersten Datei fest, mit -2 FIELD den der zweiten. Angenommen, die erste Eingabe enthält:

John 1
Jane 2
Mary 3

Die zweite enthält:

1 Doe
2 Doe
3 Sue

Sortiere die erste Datei nach Feld 2 und die zweite nach Feld 1 und führe anschließend aus:

$ join -1 2 -2 1 people.txt surnames.txt
1 John Doe
2 Jane Doe
3 Mary Sue

Verwende -t CHARACTER, wenn ein einzelnes Nicht-Leerzeichen wie : die Felder trennt. Optionen wie -a 1 oder -a 2 können nicht zugeordnete Zeilen einer Eingabe aufnehmen; standardmäßig werden nur passende Schlüssel ausgegeben.

Welche Optionen verbinden Feld 2 der ersten Datei mit Feld 1 der zweiten?

Nach Zeilenanzahl aufteilen

split schreibt aufeinanderfolgende Abschnitte einer Eingabe in getrennte Ausgabedateien. Der Befehl ist nicht die Umkehrung einer schlüsselbasierten join-Verknüpfung.

$ split large.txt

GNU schreibt standardmäßig bis zu 1000 Zeilen pro Ausgabedatei und verwendet das Präfix x, sodass Namen wie xaa, xab und xac entstehen.

Mit -l NUMBER wählst du eine Zeilenzahl; ein letzter Operand legt das Ausgabepräfix fest:

$ split -l 500 large.txt part-

So entstehen part-aa, part-ab und weitere Dateien mit jeweils höchstens 500 Zeilen.

Welcher Befehl teilt large.txt in Teile mit höchstens 500 Zeilen und dem Präfix part- auf?

Nach Größe aufteilen

Mit -b SIZE teilst du eine Eingabe nach Bytegröße. GNU-Suffixe wie K, M und G stehen hier für Zweierpotenzen auf Basis 1024:

$ split -b 10M archive.bin chunk-

Damit werden Teile von 10 Mebibyte angefordert; nur das letzte kann kleiner sein. split erstellt weder ein Archivmanifest noch Metadaten zur Wiederzusammensetzung. Bewahre die Reihenfolge der Suffixe und verkette die Teile gegebenenfalls in dieser Reihenfolge.

Welcher Befehl teilt archive.bin mit dem Präfix chunk- in Teile von 10 MiB auf?

Mit diesen Übungen kannst du schlüsselbasierte Verknüpfungen und strukturierte Datenverarbeitung praktisch trainieren:

  1. Linux join Befehl: Dateizusammenführung – Verbinde mit join Zeilen aus zwei sortierten Textdateien anhand eines gemeinsamen Feldes.
  2. Verarbeitung von Mitarbeiterdaten – Kombiniere und verarbeite Daten aus mehreren Quellen mit join und weiteren Werkzeugen wie awk.

Lektion abgeschlossen

Sie haben Verbinden und Aufteilen abgeschlossen

Du kannst nun sortierte Datensätze kombinieren oder eine Eingabe in geordnete Teile zerlegen.

  • Verbinde genau zwei Dateien über gleiche Schlüsselfelder.

  • Sortiere beide Eingaben konsistent nach ihren Verknüpfungsschlüsseln.

  • Wähle abweichende Schlüsselfelder mit -1 und -2.

  • Teile mit -l nach Zeilenanzahl auf.

  • Teile mit -b und einem eindeutigen Präfix nach Bytegröße auf.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Nächste Lektion
Zurück zu Text-Fu