Einführung

Einführung

Der Befehl Join ist ein weiteres Beispiel für das Dienstprogramm zur Textverarbeitung unter GNU/Linux. Join -Befehl kombiniert zwei Dateien basierend auf den in jeder Datei gefundenen übereinstimmenden Inhaltsleitungen. Die Verwendung des Join -Befehls ist ziemlich einfach und kann derzeit und in der richtigen Situation viel Zeit und Mühe sparen. Dieser Artikel erfordert eine sehr grundlegende Befehlszeilenerfahrung.

Häufig verwendete Optionen

  • -1 Feld
    Treten Sie auf dem festgelegten Feld in Datei 1 bei
  • -2 Feld
    Treten Sie auf dem angegebenen Feld in Datei 2 bei
  • -T char
    Verwenden Sie CHAR als Eingangs- und Ausgangsabscheider

Grundlagen

Grundlegende Nutzung des Join -Befehls ist die Verwendung ohne Optionen. Alles, was erforderlich ist, müssen 2 Dateien als Argumente angeben. Angenommen, wir haben zwei Dateien a.txt und b.TXT mit einem folgenden Inhalt:

$ cat a.txt 1 a 2 b 3 c $ cat b.txt 1 John 2 Linda 3 Rares 

Hier können wir sehen, dass das erste Feld ein perfekter Kandidat ist, um einen Join -Operation durchzuführen. Standardmäßig führt der Befehl Join Jou. Durch die Ausführung eines folgenden Linux -Befehls werden unsere beiden Dateien basierend auf Feld 1 verbunden:

$ Join a.txt b.txt 1 A John 2 B Linda 3 c Rares 

Feld wählen

In unserem vorherigen Beispiel konnten Sie eine Standardfunktion eines Join -Befehls sehen. In diesem Abschnitt sehen wir, wie wir ein anderes Feld angeben können, auf dem der Befehl Join einen Verbindungsvorgang ausführen sollte. Betrachten wir eine folgende a.txt und b.TXT -Dateien:

$ cat a.txt John A 1 Linda B 2 rares c 3 $ cat b.txt 1 a 2 b 3 c 

Wie wir sehen können, stimmt wir in diesem Fall das erste Standard -Join -Feld nicht länger überein. Durch die Ausführung eines Join -Befehls auf diesen beiden Dateien wird daher keine Ausgabe erzeugt. Wir können jedoch auch sehen, dass das zweite Feld in der ersten Datei mit dem zweiten Feld in der zweiten Datei übereinstimmt. Als Ergebnis können wir das Standardverhalten des Join -Befehls ändern und beide Dateien basierend auf dem zweiten Feld in jeder Datei verbinden:

$ Join -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C rares 3 3 

wobei -1 eine erste Datei ist und 2 ein zweites Feld und -2 ist eine zweite Datei und 2 eine zweite Spalte. In diesem Fall, nur weil beide passenden Felder als Zweiter sind, können wir -j als Verknüpfung verwenden.

$ Join -J 2 a.txt b.txt A John 1 1 B Linda 2 2 C rares 3 3 

Wie Sie bereits bemerkt haben, können ein drittes Feld und das erste Feld in beiden Dateien auch für einen Join -Operation verwendet werden.

$ Join -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C rares 3 3 $ Join -1 3 -2 1 a.txt b.txt 1 John a a 2 linda b b 3 rares c c c c 

Es ist wichtig zu beachten, dass von den letzten zu Beispielen, dass der Join -Befehl immer als zuerst das Matching -Feld druckt.

Field Gremiter wählen

Nun, nicht alle Dateien sind gut formatiert für einen Join -Befehlsvorgang. Wie bereits erwähnt, ist der Standardfeld des Standards Space. Aber was ist, wenn wir als Trennzeichen „, Comma) oder sogar Registerkarte haben? Betrachten wir eine folgenden Dateien:

$ cat a.txt John, A, 1 Linda, B, 2 Rares, C, 3 $ cat b.txt 1, a 2, b 3, c 

In diesem Fall ist der einzige Unterschied zu früheren Beispielen, dass das Feldabscheider "," ist, ",". Um Join Command zu sagen, welches Feldtrennzeichen verwendet werden, können wir die Option -t nutzen

$ join -t, -1 3 -2 1 a.txt b.txt 1, John, A, A 2, Linda, B, B 3, Rares, C, C 

Mehrere Räume

Wenn Ihre Dateien über mehrere Leerzeichen als Feldgrenzwerker verfügen. Zum Beispiel kann das Schließen dieser Dateien ziemlich schwierig sein:

$ cat a.txt John A 1 Linda B 2 rares c 3 $ cat b.txt 1 a 2 b 3 c 

Wenn Sie die Situation erlauben, können Sie sie mit dem SED -Befehl in eine einzelne Speicherdatei konvertieren:

$ sed -i 's/\ s \+//g' a.txt $ sed -i 's/\ s \+//g' b.txt $ cat a.txt b.txt John A 1 Linda B 2 RARES C 3 1 A 2 B 3 C 

Registerkarte Ein Feld Grenzwert

Die Registerkarte Trennzeichen wird auch als Standardbefehl als Standard akzeptiert. Daher führt das folgende Beispiel einen gültigen Join Operation durch:

$ cat a.txt b.txt John A 1 Linda B 2 RARES C 3 1 A 2 B 3 C $ Join -1 3 -2 1 a.txt b.txt 1 John a a 2 linda b b 3 rares c c c c 

Fall ignorieren

Wenn Ihr Matching -Feld in perfekter Reihenfolge ist, die Felder beider Dateien jedoch obere und untere Fallunterschiede haben, führt der Join keinen gültigen Join -Operation durch und ignorieren Sie nicht übereinstimmende Zeilen, es sei denn -i (ignorieren Sie Fall). Beachten Sie im folgenden Beispiel den folgenden niedrigeren Fall B:

$ cat a.txt b.txt John A 1 Linda B 2 RARES C 3 1 A 2 B 3 C $ Join -1 2 -2 2 a.txt b.txt A John 1 1 C rares 3 3 $ Join -i -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C rares 3 3 

Übergeordnetes Standard -Join -Format

Im folgenden Beispiel werden wir sehen, wie wir ein Standardverhalten des Befehlsformats mit -o überschreiben können. Betrachten Sie einen Join -Ausgang von Dateien a.txt und b.txt:

$ cat a.txt b.txt John A 1 Linda B 2 RARES C 3 1 A 2 B 3 C $ Join -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C rares 3 3 

Das Beitrittsfeld ist als erster gedruckt. Was ist, wenn wir das Fachfeld überhaupt nicht drucken möchten oder was ist, wenn wir das Feld in unterschiedlicher Reihenfolge drucken möchten?. In diesem Fall wird die Option -O -Formatoption sehr praktisch. In diesem Beispiel drucken wir nur passende Felder:

  • Erstes Feld in der ersten Datei: 1.1
  • Erstes Feld in der zweiten Datei: 2.1
$ Join -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 rares 3 

Nicht pairbare Linien

Standardmäßig werden nur Paarbare Zeilen vom Join -Befehl gedruckt. -Eine Option weist den Join -Befehl an, auch unvergleichliche Zeilen hinzuzufügen. Im nächsten Beispiel drucken wir alle unerreichten Zeilen in Datei 1.

$ cat a.txt b.txt John A 1 Linda B 2 RARES C 3 LUBOS D 4 1 A 2 B 3 C 5 E $ Join -a 1 -o 1 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 Lubos 

Oder wir drucken alle nicht pairbaren Zeilen aus beiden Dateien nach:

$ Join -a 1 -a 2 -o 1 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 Lubos 5 

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mastering -Bash -Skriptschleifen beherrschen
  • Verschachtelte Schleifen in Bash -Skripten
  • Umgang mit Benutzereingaben in Bash -Skripten
  • Grundlegende Linux -Befehle
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • So montieren Sie das ISO -Bild unter Linux