In Linux ist die Verwaltung und Bearbeitung von Textdateien eine häufige Aufgabe. Zwei leistungsstarke Dienstprogramme hierfür sind join und split. Der Befehl join führt Zeilen aus zwei Dateien basierend auf einem gemeinsamen Feld zusammen, während split eine große Datei in kleinere, besser handhabbare Teile zerlegt.
Dateien nach einem gemeinsamen Feld zusammenfügen
Der Befehl join ist ein grundlegendes Werkzeug, wenn Sie linux join files (Linux-Dateien zusammenfügen) müssen. Standardmäßig kombiniert er Zeilen aus zwei sortierten Dateien basierend auf dem identischen ersten Feld.
Stellen Sie sich zum Beispiel vor, Sie haben zwei Dateien, die Sie zusammenführen möchten:
file1.txt
1 John
2 Jane
3 Mary
file2.txt
1 Doe
2 Doe
3 Sue
Mit dem Befehl join können Sie sie einfach kombinieren:
$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
Wie Sie sehen, wurden die Dateien mithilfe des gemeinsamen ersten Feldes (1, 2, 3) zusammengefügt. Damit join korrekt funktioniert, müssen die Verknüpfungsfelder in beiden Dateien sortiert sein.
Angabe unterschiedlicher Verknüpfungsfelder
Was ist, wenn das gemeinsame Feld nicht die erste Spalte ist? Sie können join mitteilen, welche Felder verwendet werden sollen. Betrachten Sie diese Dateien:
file1.txt
John 1
Jane 2
Mary 3
file2.txt
1 Doe
2 Doe
3 Sue
Hier müssen wir das zweite Feld von file1.txt und das erste Feld von file2.txt verknüpfen. Der Befehl würde lauten:
$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
Die Option -1 2 gibt das Feld 2 der ersten Datei an, und -2 1 gibt das Feld 1 der zweiten Datei an.
Aufteilen großer Dateien
Der Befehl split macht das Gegenteil von join; er teilt eine große Datei in kleinere auf.
split somefile
Standardmäßig teilt dieser Befehl somefile in neue Dateien auf, sobald eine Grenze von 1000 Zeilen erreicht ist. Die Ausgabedateien werden als xaa, xab usw. benannt. Sie können dieses Verhalten anpassen, indem Sie beispielsweise mit der Option -l eine andere Zeilenanzahl angeben oder mit der Option -b nach Dateigröße aufteilen.