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.
Text-Fu · Lektion 11
Verbinden und Aufteilen
Lerne, zwei sortierte Textdateien über einen Schlüssel zu verbinden und eine Datei in benannte Teile aufzuteilen.
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:
- Linux join Befehl: Dateizusammenführung – Verbinde mit
joinZeilen aus zwei sortierten Textdateien anhand eines gemeinsamen Feldes. - Verarbeitung von Mitarbeiterdaten – Kombiniere und verarbeite Daten aus mehreren Quellen mit
joinund weiteren Werkzeugen wieawk.
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
-1und-2.Teile mit
-lnach Zeilenanzahl auf.Teile mit
-bund 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