GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux Join Command Tutorial für Anfänger (5 Beispiele)

Manchmal möchten Sie vielleicht zwei Dateien so kombinieren, dass die Ausgabe noch sinnvoller wird. Beispielsweise könnte es eine Datei geben, die Namen von Kontinenten enthält, und eine andere Datei, die Namen von Ländern enthält, die sich auf diesen Kontinenten befinden, und die Anforderung besteht darin, beide Dateien so zu kombinieren, dass ein Kontinent und das entsprechende Land in derselben Zeile erscheinen.

Das ist nur ein Beispiel – es könnte Hunderte solcher Anwendungsfälle geben. Wenn Sie Linux verwenden und nach einem Tool suchen, das Ihnen in diesen Situationen helfen kann, sollten Sie sich join ansehen , bei dem es sich um ein Befehlszeilendienstprogramm handelt. In diesem Tutorial werden wir diesen Befehl anhand einiger leicht verständlicher Beispiele besprechen.

Bitte beachten Sie, dass alle in diesem Artikel erwähnten Beispiele auf Ubuntu 16.04 getestet wurden und die von uns verwendete Join-Befehlsversion 8.25 ist.

Linux-Join-Befehl

Mit dem Join-Befehl können Sie Zeilen zweier Dateien in einem gemeinsamen Feld kombinieren.

join [OPTION]... FILE1 FILE2

Hier ist, was die Manpage über dieses Tool sagt:

For each pair of input lines with identical join fields, write a line to standard output. The default 
join field is the first, delimited by blanks. When FILE1 or FILE2 (not both) is -, read standard input.

Die folgenden Beispiele sollen Ihnen eine gute Vorstellung davon geben, wie der Join-Befehl funktioniert.

1. Wie kombiniert man Dateizeilen mit dem Join-Befehl?

Lassen Sie uns die grundlegende Verwendung des Join-Befehls verstehen. Angenommen, es gibt zwei Dateien (Datei1 und Datei2), die die folgenden Zeilen enthalten:

1. Asia:
2. Africa:
3. Europe:
4. North America:

und

1. India
2. Nigeria
3. The Netherlands
4. The US

Jetzt können Sie diese beiden Dateien wie folgt kombinieren:

join file1 file2

Hier ist die Ausgabe des obigen Befehls in unserem Fall:

2. Wie bringt man Join dazu, unpaarbare Linien zu drucken?

Standardmäßig gibt der Join-Befehl nur paarbare Linien aus. Zum Beispiel, auch wenn Datei1 ein zusätzliches Feld enthält (Zeile Nummer 5):

1. Asia:
2. Africa:
3. Europe:
4. North America:
5. South America:

Das Verbinden von Datei1 und Datei2 erzeugt keine unterschiedliche Ausgabe:

Das liegt daran, dass unpaarbare Zeilen in der Ausgabe weggelassen werden. Wenn Sie möchten, können Sie sie dennoch mit -a in der Ausgabe haben Befehlszeilenoption. Bei dieser Option müssen Sie eine Dateinummer übergeben, damit das Tool weiß, von welcher Datei Sie sprechen.

In unserem Fall wäre der Befehl beispielsweise:

join file1 file2 -a 1

Sie können also sehen, dass die ungepaarte Zeile von Datei Nummer 1 (in unserem Fall Datei1) auch in der Ausgabe angezeigt wurde.

Beachten Sie, dass Sie dies mit -v tun können, falls Sie nur ungepaarte Zeilen drucken möchten (d. h. die gepaarten Zeilen in der Ausgabe unterdrücken). Befehlszeilenoption. Diese Option funktioniert genauso wie -a.

Hier ist ein Beispiel für die Option -v:

3. Wie stellt man benutzerdefinierte Join-Felder bereit?

Wie wir bereits wissen, kombiniert Join Zeilen von Dateien in einem gemeinsamen Feld, das standardmäßig das erste Feld ist. Wenn Sie möchten, können Sie jedoch für jede Datei ein anderes Feld angeben. Betrachten Sie beispielsweise die folgenden Inhalte in Datei1 bzw. Datei2.

* 1. Asia:
& 2. Africa:
@ 3. Europe:
# 4. North America:
# 1. India
@ 2. Nigeria
& 3. The Netherlands
* 4. The US

Wenn Sie nun möchten, dass das zweite Feld jeder Zeile das gemeinsame Feld für die Verknüpfung ist, können Sie dies dem Tool mitteilen, indem Sie -1 verwenden und -2 Befehlszeilenoptionen. Während ersteres die erste Datei darstellt, bezieht sich letzteres auf die zweite Datei. Diese Optionen erfordern ein numerisches Argument, das sich auf das Verbindungsfeld für die entsprechende Datei bezieht.

In unserem Fall lautet der Befehl beispielsweise:

join -1 2 -2 2 file1 file2

Und hier ist die Ausgabe dieses Befehls:

Beachten Sie, dass Sie den Teil - ersetzen können, falls die Position des gemeinsamen Felds in beiden Dateien gleich ist (wie in dem gerade besprochenen Beispiel, wo es 2 ist). 1 [Feld] -2 [Feld] im Befehl mit -j [Feld] . In unserem Fall würde der Befehl also zu:

Join -j2 Datei1 Datei2

4. Wie lässt sich die Groß-/Kleinschreibung bei Join-Operationen ignorieren?

Standardmäßig wird beim Join-Befehl zwischen Groß- und Kleinschreibung unterschieden. Betrachten Sie beispielsweise die folgenden Dateien:

Datei1

A. Asia:
B. Africa:
C. Europe:
D. North America:

Datei2

a. India
b. Nigeria
c. The Netherlands
d. The US

Wenn Sie nun versuchen, diese beiden Dateien mit dem standardmäßigen (ersten) gemeinsamen Feld zu verbinden, wird nichts passieren. Das liegt daran, dass die Groß- und Kleinschreibung von Feldelementen in beiden Dateien unterschiedlich ist. Verwenden Sie -i, damit Join dieses Groß-/Kleinschreibungsproblem ignoriert Befehlszeilenoption.

Hier ist der Befehl für unseren Fall:

join -i file1 file2

Und der folgende Screenshot zeigt den Befehl in Aktion:

5. Wie kann ich dafür sorgen, dass bei Join nicht nach sortierten Eingaben gesucht wird?

Standardmäßig prüft der Join-Befehl, ob die bereitgestellte Eingabe sortiert ist oder nicht, und meldet, ob dies nicht der Fall ist. Betrachten Sie beispielsweise die folgende Ausgabe, wenn die Informationen in Datei1 nicht sortiert wurden:

Falls Sie nun möchten, dass dieser Fehler/diese Warnung verschwindet, können Sie dies mit --nocheck-order tun Möglichkeit. Hier ist derselbe Befehl, aber mit aktivierter Option:

Sie können also sehen, dass der Join-Befehl dieses Mal nicht nach sortierter Eingabe gesucht hat.

Schlussfolgerung

Join ist vielleicht kein sehr einfach zu verstehendes Tool, aber sobald Sie sich daran gewöhnt haben, kann es in manchen Situationen eine enorme Zeitersparnis für Sie darstellen. Wir haben hier die meisten Befehlszeilenoptionen behandelt. Probieren Sie diese aus, und wenn Sie fertig sind, gehen Sie für den Rest die Manpage des Befehls durch.


Linux
  1. Linux-CD-Befehls-Tutorial für Anfänger (8 Beispiele)

  2. Linux-Kommando-Tutorial für Anfänger (5 Beispiele)

  3. Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

  4. Linux Date Command Tutorial für Anfänger (8 Beispiele)

  5. Linux-Hostname-Befehls-Tutorial für Anfänger (5 Beispiele)

Linux Who Command Tutorial für Anfänger (8 Beispiele)

Linux nl Command Tutorial für Anfänger (7 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)