News Ticker

Unix-Tools 6: join & paste

UNIX/Linux ist hauptsächlich ein sehr beliebtes Server-Betriebssystem. Viele Datenbank- und Webserver laufen auf diesem stabilen System. Wer viel mit Datenbankservern wie z.B. von Oracle oder MySQL (gehört ja letztendlich der gleichen Firma) arbeitet, sollte weiterlesen. Denn relationsalgebraische Operationen lassen sich auch auf normale Textdateien anwenden, durchaus sinnvoll.


Bei join handelt es sich um ein Programm, das zwei Dateien mit jeweils zwei Spalten nach der ersten zusammenfügt. Klingt zu theoretisch? Hier ein Beispiel:


martin@lawrencium% cat datei1
Mueller Max
Peters Frank
Schumann Robert
martin@lawrencium% cat datei2
Ackermann Olaf
Mueller Peter
Mustermann Max
martin@lawrencium% join datei1 datei2
Mueller Max Peter

Als erstes muss man anmerken, dass beide Dateien sortiert sein müssen. Das kann man einfach mit sort erledigen wie in Unix-Tools 3: sort beschrieben. Danach werden die beiden Dateien durchsucht und anhand der ersten Spalte (also den Nachnamen) verglichen. Ein join fügt alle gleichen Nachnamen zusammen. Die Ausgabe zeigt erst den gemeinsamen Nachnamen und danach die entsprechenden Vornamen. Es gibt auch noch ein paar interessante Schalter zum ausprobieren: –a gibt auch nicht zusammenfügbare Zeilen aus, –i (ignore case, dt. Groß- und Kleinschreibung ignorieren) behandelt groß- und kleingeschriebene Buchstaben gleich und mit –t kann man ein bestimmtes Trennzeichen angeben (wie schon bei vielen anderen Tools beschrieben).

Ein kurzes Beispiel für paste erklärt eigentlich schon das Gröbste:


martin@lawrencium% cat datei3
1
2
3
martin@lawrencium% cat datei4
Frankfurt
Wiesbaden
Muenchen
martin@lawrencium% cat datei5
Hessen
Hessen
Bayern
martin@lawrencium% paste datei*
1 Frankfurt Hessen
2 Wiesbaden Hessen
3 Muenchen Bayern

Mehrere Dateien werden zu einer Tabelle zusammengefügt. Dabei müssen die Dateien nicht sortiert sein; es wird einfache Zeile für Zeile zusammengesetzt – ohne lexikalische Vergleiche. Interessant ist der Schalter –s (serial, dt. seriell, nicht parallel). Jetzt werden die Dateien intern seriell und nicht (wie üblich) parallel verarbeitet. Praktisch bedeutet das eine “umgekehrte Tabelle”:


martin@lawrencium% paste -s datei*
1       2       3
Frankfurt       Wiesbaden       Hamburg
Hessen  Hessen  Hamburg

Ich hoffe es war etwas Interessantes für euch dabei. Wie immer empfehle ich euch die man-/info-Seiten und mir bei Fragen einfach einen Kommentar zu hinterlassen. Viel Erfolg!

1 Kommentar zu Unix-Tools 6: join & paste

  1. Chris // 26. Jul 2010 um 00:27 //

    Ich habe den Artikel erst jetzt gelesen. Er hat mir sehr gut gefallen, da ich die beiden Tools die ganzen Jahre gar nicht kannte. Die lassen sich in jedem Fall bei so manchen Vorgängen verwenden. 🙂 Bin gespannt was sonst noch so kommt.

Kommentare sind deaktiviert.