Shells: Tutorial


* Einführung * Installation * Paketmanager * Grundlagen * Shells * Entwicklung * KDE * Skriptsprachen * AWK * PHP * Perl * Apache * Veranstaltungen * Schulungen * Bücher * Netzwerk * OpenOffice * OpenSource * Samba

Shells


© <a href="http://www.fotolia.de/p/29003">Ljupco Smokovski</a> - FOTOLIA
Home
Erste Schritte mit der Bourne-Shell
Dateien zeilenweise zusammenfügen
Head or Tail
Schleifen und Zählen
Shell-Variablen
Pipes
Sortieren von Daten
Wer sucht der findet!
Praktische Shell-Skripte
Rechtschreibung
Schleifen und elegant Zählen
Texte formatieren mit fmt und fold
Umlenkung der Ein- und der Ausgaben
Klammer-Erweiterung
Verknüpfen von Textdateien mittels Schlüsselfeldern
Mit freundlicher Unterstützung von:

Linux-Kurse und Seminare Linux Kurse
Veranstalter des
Linux-Tag
am Bodensee
2007 und 2008

Kontakt
Haftung
Impressum
Problem Hilfe Startseite


join

Ein äußerst interessanter Befehl, der leider selbst von vielen Linux-Kennern kaum Beachtung findet bzw. gar nicht bekannt ist.

Syntax
    join [Optionen] Datei1 Datei2

Zeilen der beiden Dateien, die ein identisches Schlüsselfeld (join field) habenwerden für die Ausgabe zu einer Zeile zusammengefasst. Alle anderen Zeilen erscheinen nicht in der Ausgabe.

datei1.txt
datei2.txt
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
1 eins
2 zwei
3 drei
3,5 dreieinhalb
4 vier
5 fünf
6 sechs
7 sieben

Der Aufruf:
 join -j 1 datei1.txt datei2.txt

liefert folgendes Ergebnis:

1 one eins
2 two zwei
3 three drei
4 four vier
5 five fünf
6 six sechs
7 seven sieben

Man sieht, dass die Zeile "0 zero" der ersten Datei und die Zeile "3,5 dreieinhalb" der zweiten Datei nicht in der Ausgabe erscheinen. "-j 1" besagt, dass man die erste Spalte als Schlüsselfeld deklariert. Gibt man die Option -j nicht an, so wird die erste Spalte default-mäßig als Schlüsselfeld angenommen.

Interessant ist auch die Option -a. Sie kann den Wert 1 (erste Datei) oder den Wert 2 (zweite Datei) annehmen. Für "-a 1" werden auch die Zeilen der ersten Datei, die sich nicht mit der zweiten Datei verknüpfen lassen, in der Ausgabe übernommen. Am besten sieht man dies an einem einfachen Beispiel:

 join -a 1 datei1.txt datei2.txt

liefert:

0 zero
1 one eins
2 two zwei
3 three drei
4 four vier
5 five fünf
6 six sechs
7 seven sieben

Aber

join -a 2 datei1.txt datei2.txt

liefert

1 one eins
2 two zwei
3 three drei
3,5 dreieinhalb
4 four vier
5 five fünf
6 six sechs
7 seven sieben

Die Option "-v" verhält sich wie -a, aber es werden nur die Zeilen ausgegeben, die sich von der ersten Datei bei  "-v 1" nicht verknüpfen lassen, bzw. von der zweiten Datei bei "-v 2".

Beispiele:
join -v 2 datei1.txt datei2.txt
Ausgabe:
3,5 dreieinhalb

 join -v 1 datei1.txt datei2.txt
liefert
0 zero

© Copyright 2007 - 2010, Bernd Klein mit freundlicher Unterstützung von Bodenseo, Linux-Kurse und Schulungen,
Foto linke Seite (Mann mit Strick und Colt): Foto: © Ljupco Smokovski, fotolia 984022