Fortgeschrittene Join-Optionen
In realen Datenverarbeitungstasks benötigen Sie oft fortgeschrittene Join-Operationen, wie das Behandeln von unpaaren Daten oder das Auswählen bestimmter Felder. Dieser Schritt führt Sie in diese fortgeschrittenen Optionen des join
-Befehls ein.
Erstellen wir zwei komplexere Dateien für unsere Beispiele:
echo -e "1:2023-04-01:Thunderstorm\n2:2023-04-15:Hurricane\n3:2023-05-02:Tornado\n4:2023-05-10:Blizzard" > ~/project/storms_types.txt
echo -e "1:High\n2:Medium\n5:Low" > ~/project/severity.txt
Untersuchen wir die Inhalte dieser Dateien:
cat ~/project/storms_types.txt
Sie sollten Folgendes sehen:
1:2023-04-01:Thunderstorm
2:2023-04-15:Hurricane
3:2023-05-02:Tornado
4:2023-05-10:Blizzard
cat ~/project/severity.txt
Sie sollten Folgendes sehen:
1:High
2:Medium
5:Low
Beachten Sie, dass diese Dateien keine perfekte Übereinstimmung der IDs aufweisen:
severity.txt
hat einen Eintrag für die Sturm-ID 5, der in storms_types.txt
nicht existiert.
storms_types.txt
hat Einträge für die Sturm-IDs 3 und 4, die in severity.txt
nicht existieren.
Standardmäßig gibt join
nur Zeilen aus, bei denen das Join-Feld in beiden Dateien übereinstimmt:
join -t: ~/project/storms_types.txt ~/project/severity.txt
Sie sollten Folgendes sehen:
1:2023-04-01:Thunderstorm:High
2:2023-04-15:Hurricane:Medium
Nur die Sturm-IDs 1 und 2 erscheinen in der Ausgabe, da sie die einzigen sind, die in beiden Dateien existieren.
Behandeln von unpaaren Zeilen
Um unpaare Zeilen in die Ausgabe aufzunehmen, können Sie die -a
-Option verwenden:
join -t: -a 1 -a 2 ~/project/storms_types.txt ~/project/severity.txt
Die Option -a 1
teilt join
mit, unpaare Zeilen aus der ersten Datei aufzunehmen, und -a 2
macht dasselbe für die zweite Datei.
Sie sollten Folgendes sehen:
1:2023-04-01:Thunderstorm:High
2:2023-04-15:Hurricane:Medium
3:2023-05-02:Tornado:
4:2023-05-10:Blizzard:
5::Low
Beachten Sie, wie unpaare Zeilen leere Felder haben, wo die Daten aus der anderen Datei wären.
Auswählen bestimmter Felder
Sie können auch bestimmte Felder aus jeder Datei auswählen, um sie in die Ausgabe aufzunehmen, indem Sie die -o
-Option verwenden:
join -t: -o 1.1,1.3,2.2 ~/project/storms_types.txt ~/project/severity.txt
Die Option -o 1.1,1.3,2.2
gibt an, welche Felder ausgegeben werden sollen:
1.1
: Erstes Feld aus der ersten Datei (Sturm-ID)
1.3
: Drittes Feld aus der ersten Datei (Sturmtyp)
2.2
: Zweites Feld aus der zweiten Datei (Schweregrad)
Sie sollten Folgendes sehen:
1:Thunderstorm:High
2:Hurricane:Medium
Diese Ausgabe enthält nur die Sturm-ID, den Sturmtyp und den Schweregrad und lässt die Datumsinformationen aus. Dies ist besonders nützlich, wenn Sie mit Dateien arbeiten, die viele Felder haben, aber nur bestimmte Felder in Ihrer Ausgabe benötigen.