Wie die Verwendung der join-Befehl unter Linux

0
272
Fatmawati Achmad Zaenuri/Shutterstock

Wenn Sie möchten, Zusammenführen von Daten aus zwei text-Dateien, durch die passenden ein gemeinsames Feld, können Sie das Linux-join-Befehl. Es fügt eine Prise Dynamik, um Ihre statische Daten-Dateien. Wir zeigen Ihnen, wie es zu benutzen.

Übereinstimmende Daten In Dateien

Data is king. Konzerne, Unternehmen und private Haushalte gleichermaßen laufen. Aber die Daten in verschiedenen Dateien gespeichert und sortiert, die von verschiedenen Personen ist ein Schmerz. Zusätzlich zu wissen, welche Dateien zu öffnen, finden Sie die gewünschten Informationen, das layout und das format der Dateien sind wahrscheinlich, anders zu sein.

Sie haben auch auf den Umgang mit den administrativen Kopfschmerzen, welche Dateien aktualisiert werden müssen, welche gesichert werden müssen, das sind ältere, und welche, die archiviert werden können.

Plus, wenn Sie brauchen, um zu konsolidieren Ihre Daten oder führen einige Analyse der gesamten Daten-set, haben Sie ein zusätzliches problem. Wie Sie zu rationalisieren, die Daten in den verschiedenen Dateien, bevor Sie das tun können, was Sie brauchen, zu tun? Wie gehen Sie bei der Datenaufbereitung phase?

Die gute Nachricht ist, wenn Sie die Dateien freigeben, dass mindestens eine gemeinsame Daten-element, das Linux join-Befehl können Sie ziehen aus dem Sumpf.

Die Daten-Dateien

Alle Daten, die wir verwenden werden, um zu veranschaulichen die Verwendung der join-Befehl ist erfunden, beginnend mit den beiden folgenden Dateien:

Katze file-1.txt
Katze file-2.txt

Die folgenden ist der Inhalt file-1.txt:

1 Adore Varian avarian0@newyorker.com Weibliche 192.57.150.231
2 Nancee Merrell nmerrell1@ted.com Weibliche 22.198.121.181
3 Herta Friett hfriett2@dagondesign.com Weibliche 33.167.32.89
4 Torie Venmore tvenmore3@gmpg.org Weibliche 251.9.204.115
5 Deni Sealeaf dsealeaf4@nps.gov Weibliche 210.53.81.212
6 Fidel Bezley fbezley5@lulu.com Männliche 72.173.218.75
7 Ulrikaumeko Standen ustanden6@geocities.jp Weibliche 4.204.0.237
8 Odell Jursch ojursch7@utexas.edu Männliche 1.138.85.117

Wir haben eine Reihe von nummerierten Zeilen, und jede Zeile enthält die folgenden Informationen:

  • Eine Reihe
  • Ein Erster name
  • Ein Familienname
  • Eine E-Mail-Adresse
  • Geschlecht der person
  • Eine IP-Adresse

Die folgenden ist der Inhalt file-2.txt:

1 Varian avarian0@newyorker.com Weibliche Western New York $535,304.73
2 Merrell nmerrell1@ted.com Weibliche Finger Lakes $309,033.10
3 Friett hfriett2@dagondesign.com Weibliche Southern Tier $461,664.44
4 Venmore tvenmore3@gmpg.org Weiblich Central New York $175,818.02
5 Sealeaf dsealeaf4@nps.gov Weiblich North Country $126,690.15
6 Bezley fbezley5@lulu.com Männliche Mohawk Valley $366,733.78
7 Standen ustanden6@geocities.jp Female Capital District $674,634.93
8 Jursch ojursch7@utexas.edu Männliche Hudson Valley $663,821.09

Jede Zeile in file-2.txt enthält die folgenden Informationen:

  • Eine Reihe
  • Ein Familienname
  • Eine E-Mail-Adresse
  • Geschlecht der person
  • Eine region New York
  • Ein dollar Wert

Der join-Befehl arbeitet mit “Feldern”, die, bedeutet in diesem Kontext, einen Abschnitt der text, umgeben von Leerzeichen am Anfang der Zeile oder das Ende einer Zeile. Für join-zu-match-up-Linien zwischen den beiden Dateien ist, muss jede Zeile enthält ein gemeinsames Feld.

Deshalb können wir nur entsprechen, ein Feld, wenn es erscheint in den beiden Dateien. Die IP-Adresse erscheint nur in einer Datei, so ist das nicht gut. Der erste name erscheint nur in einer Datei, so dass wir nicht verwenden können, dass entweder. Der Familienname ist in beiden Dateien, aber es wäre eine schlechte Wahl, wie verschiedene Leute den gleichen Nachnamen haben.

Sie können nicht binden Sie die Daten zusammen mit den männlichen und weiblichen Einträgen, entweder, weil Sie zu vage ist. Die Regionen von New York und dem US-dollar Werte werden nur angezeigt, in eine Datei, auch.

Jedoch, können wir die E-Mail-Adresse, weil es in beiden Dateien, und jedes ist einzigartig, ein Individuum. Ein kurzer Blick durch die Dateien bestätigt auch die Linien im einzelnen entsprechen die gleiche person, so können wir die Zeilennummern als unser Feld zu entsprechen (wir benutzen ein anderes Feld später).

Hinweis: es gibt eine unterschiedliche Anzahl von Feldern in den beiden Dateien, was in Ordnung ist—können wir sagen, beitreten, welches Feld aus der jeweiligen Datei.

Jedoch, watch out für Bereiche wie die Regionen von New York; in eine durch Leerzeichen-getrennte Datei, jedes Wort in dem Namen einer region sieht aus wie ein Feld. Da einige Regionen haben zwei – oder drei-Wort-Namen, Sie haben tatsächlich bekam eine unterschiedliche Anzahl von Feldern in derselben Datei. Das ist okay, solange Sie passen auf die Felder in der Zeile angezeigt, bevor die New-York-Regionen.

Der join-Befehl

Zuerst das Feld, das Sie gehen zu entsprechen, muss sortiert werden. Wir haben aufsteigende Nummern in beiden Dateien, so erfüllen wir diese Kriterien. By default, join verwendet das erste Feld in eine Datei, die ist, was wir wollen. Eine weitere sinnvolle default ist, dass join erwartet, dass die Feld-Separatoren werden whitespace-Zeichen. Wieder, wir haben das, wir können gehen Sie vor und Feuer verbinden.

Wie verwenden wir die Standardeinstellungen, unser Befehl ist einfach:

beitreten file-1.txt file-2.txt

beizutreten ist der Ansicht der Dateien “Datei” und “Datei ” zwei” nach der Reihenfolge, in der Sie in der Befehlszeile aufgelistet sind.

Die Ausgabe ist wie folgt:

1 Adore Varian avarian0@newyorker.com Weibliche 192.57.150.231 Varian avarian0@newyorker.com Weibliche Western New York $535,304.73
2 Nancee Merrell nmerrell1@ted.com Weibliche 22.198.121.181 Merrell nmerrell1@ted.com Weibliche Finger Lakes $309,033.10
3 Herta Friett hfriett2@dagondesign.com Weibliche 33.167.32.89 Friett hfriett2@dagondesign.com Weibliche Southern Tier $461,664.44
4 Torie Venmore tvenmore3@gmpg.org Weibliche 251.9.204.115 Venmore tvenmore3@gmpg.org Weiblich Central New York $175,818.02
5 Deni Sealeaf dsealeaf4@nps.gov Weibliche 210.53.81.212 Sealeaf dsealeaf4@nps.gov Weiblich North Country $126,690.15
6 Fidel Bezley fbezley5@lulu.com Männliche 72.173.218.75 Bezley fbezley5@lulu.com Männliche Mohawk Valley $366,733.78
7 Ulrikaumeko Standen ustanden6@geocities.jp Weibliche 4.204.0.237 Standen ustanden6@geocities.jp Female Capital District $674,634.93
8 Odell Jursch ojursch7@utexas.edu Männliche 1.138.85.117 Jursch ojursch7@utexas.edu Männliche Hudson Valley $663,821.09

Die Ausgabe formatiert ist, in der folgenden Weise: Das Feld der Linien angepasst wurden, ist zuerst gedruckt werden, gefolgt von den anderen Feldern aus der Datei ein, und klicken Sie dann die Felder aus der Datei zwei ohne das Spielfeld.

Unsortierte Felder

Lassen Sie uns versuchen, etwas, das wir wissen, wird nicht funktionieren. Wir werden die Zeilen in eine Datei aus, um so beitreten, werden nicht in der Lage, um die Datei korrekt. Die Inhalte file-3.txt sind die gleichen wie file-2.txt aber Strich-acht ist zwischen den Zeilen fünf und sechs.

Die folgenden ist der Inhalt file-3.txt:

1 Varian avarian0@newyorker.com Weibliche Western New York $535,304.73
2 Merrell nmerrell1@ted.com Weibliche Finger Lakes $309,033.10
3 Friett hfriett2@dagondesign.com Weibliche Southern Tier $461,664.44
4 Venmore tvenmore3@gmpg.org Weiblich Central New York $175,818.02
5 Sealeaf dsealeaf4@nps.gov Weiblich North Country $126,690.15
8 Jursch ojursch7@utexas.edu Männliche Hudson Valley $663,821.09
6 Bezley fbezley5@lulu.com Männliche Mohawk Valley $366,733.78
7 Standen ustanden6@geocities.jp Female Capital District $674,634.93

Wir geben den folgenden Befehl ein, um zu versuchen, um die join-Datei-3.txtto file-1.txt:

beitreten file-1.txt file-3.txt

join berichtet, dass die siebte Zeile in file-3.txt nicht in Ordnung ist, so ist es nicht verarbeitet. Zeile sieben ist die eine, die beginnt mit der Zahl sechs, was kommen sollte, vor acht in eine korrekt sortierte Liste. Die sechste Zeile in der Datei (die beginnt mit “8 Odell”) war die Letzte verarbeitet, so sehen wir die Ausgabe für es.

Sie können die Verwendung der –check-order-option, wenn Sie möchten, um zu sehen, ob die join freut sich mit der Sortierreihenfolge der Dateien—keine Zusammenführung versucht werden.

Dazu geben wir die folgenden:

join –check-Bestellung file-1.txt file-3.txt

join sagt Ihnen im Voraus, es geht um ein problem mit der Linie, sieben-Datei file-3.txt.

Dateien mit Fehlenden Linien

In file-4.txt die Letzte Zeile entfernt wurde, so gibt es nicht eine Zeile acht. Die Inhalte sind wie folgt:

1 Varian avarian0@newyorker.com Weibliche Western New York $535,304.73
2 Merrell nmerrell1@ted.com Weibliche Finger Lakes $309,033.10
3 Friett hfriett2@dagondesign.com Weibliche Southern Tier $461,664.44
4 Venmore tvenmore3@gmpg.org Weiblich Central New York $175,818.02
5 Sealeaf dsealeaf4@nps.gov Weiblich North Country $126,690.15
6 Bezley fbezley5@lulu.com Männliche Mohawk Valley $366,733.78
7 Standen ustanden6@geocities.jp Female Capital District $674,634.93

Wir geben Sie den folgenden und, überraschend, treten nicht beschweren und verarbeitet alle Zeilen, die es können:

beitreten file-1.txt file-4.txt

Die Ausgabe listet sieben zusammengeführten Linien.

Die -eine (drucken nicht passende) option sagt “join”, um auch die Linien drucken, konnte nicht abgestimmt werden.

Hier geben wir den folgenden Befehl aus, um zu sagen, “join”, um drucken Sie die Zeilen aus der Datei ein, die nicht verglichen werden kann, um die Zeilen in einer Datei zwei:

mitmachen -1 file-1.txt file-4.txt

Sieben Linien sind aufeinander abgestimmt, und der Strich-acht von der Datei gedruckt wird, unerreicht. Es gibt keine Informationen zusammengeführt, weil file-4.txt nicht enthalten, eine Zeile acht, um was es konnte abgestimmt werden. Allerdings, zumindest ist es noch in der Ausgabe angezeigt, so dass Sie wissen, dass es nicht über eine übereinstimmung in file-4.txt.

Wir geben im folgenden -v (unterdrücken von verbundenen Linien) – Befehl, um zu zeigen alle Zeilen, die nicht über eine übereinstimmung:

join -v file-1.txt file-4.txt

Wir sehen, dass der Strich-acht ist der einzige, der kein match in der Datei zwei.

Passende Andere Felder

Lasst uns übereinstimmen, werden zwei neue Dateien auf ein Feld, das nicht den Standardwert (Feld). Die folgenden ist der Inhalt file-7.txt:

avarian0@newyorker.com Weibliche 192.57.150.231
dsealeaf4@nps.gov Weibliche 210.53.81.212
fbezley5@lulu.com Männliche 72.173.218.75
hfriett2@dagondesign.com Weibliche 33.167.32.89
nmerrell1@ted.com Weibliche 22.198.121.181
ojursch7@utexas.edu Männliche 1.138.85.117
tvenmore3@gmpg.org Weibliche 251.9.204.115
ustanden6@geocities.jp Weibliche 4.204.0.237

Und die folgenden ist der Inhalt von file-8.txt:

Weiblich avarian0@newyorker.com Western New York $535,304.73
Weiblich dsealeaf4@nps.gov North Country $126,690.15
Männlich fbezley5@lulu.com Mohawk Valley $366,733.78
Weiblich hfriett2@dagondesign.com Southern Tier $461,664.44
Weiblich nmerrell1@ted.com Finger Lakes $309,033.10
Männlich ojursch7@utexas.edu Hudson Valley $663,821.09
Weiblich tvenmore3@gmpg.org Central New York $175,818.02
Weiblich ustanden6@geocities.jp Capital District $674,634.93

Die einzig sinnvolle Feld für die Teilnahme ist die E-Mail-Adresse, das Feld in die erste Datei und Feld, zwei in der zweiten. Um dies zu berücksichtigen, können wir die -1 (Datei ein Feld) und -2 (“Datei” zwei-Feld) – Optionen. Wir verfolgen diese mit eine Zahl, die angibt, welches Feld in jeder Datei verwendet werden soll für den Beitritt.

Wir geben das folgende zu sagen join verwenden Sie das erste Feld in der Datei und der zweiten Datei in zwei:

join–1 1 -2 2 file-7.txt file-8.txt

Die Dateien werden an die E-Mail-Adresse, die angezeigt wird, als das erste Feld jeder Zeile in der Ausgabe.

Mit Verschiedenen Feld-Separatoren

Was, wenn Sie Dateien mit Feldern, getrennt durch etwas anderes als Leerzeichen?

Die beiden folgenden Dateien werden durch Kommas getrennt—die nur whitespace-Zeichen zwischen mehreren word-Ortsnamen:

Katze file-5.txt
Katze file-6.txt

Wir können verwenden Sie die-t (Trennzeichen) zu sagen, beitreten, welches Zeichen als Feldtrenner. In diesem Fall, es ist das Komma, also wir geben den folgenden Befehl ein:

join-t, file-5.txt file-6.txt

Alle Linien sind aufeinander abgestimmt, und die Räume erhalten in den Ortsnamen.

Ignorieren Von Groß – / Kleinschreibung

Eine andere Datei, file-9.txt ist fast identisch file-8.txt. Der einzige Unterschied ist, dass ein Teil der E-Mail-Adressen haben Sie einen Großbuchstaben schreiben, wie unten dargestellt:

Weiblich avarian0@newyorker.com Western New York $535,304.73
Weiblich dsealeaf4@nps.gov North Country $126,690.15
Männlich Fbezley5@lulu.com Mohawk Valley $366,733.78
Weiblich hfriett2@dagondesign.com Southern Tier $461,664.44
Weiblich nmerrell1@ted.com Finger Lakes $309,033.10
Männlich Ojursch7@utexas.edu Hudson Valley $663,821.09
Weiblich tvenmore3@gmpg.org Central New York $175,818.02
Weiblich ustanden6@geocities.jp Capital District $674,634.93

Als wir zusammen file-7.txt und file-8.txt es funktionierte perfekt. Mal sehen, was passiert mit file-7.txt und file-9.txt.

Wir geben Sie den folgenden Befehl ein:

join–1 1 -2 2 file-7.txt file-9.txt

Wir nur noch übertroffen von sechs Linien. Die Unterschiede in groß – und Kleinbuchstaben verhindert, die anderen beiden E-Mail Adressen aus, die verbunden werden.

Allerdings können wir die Verwendung der -i (ignore case) – option zu zwingen, beitreten zu ignorieren diese Unterschiede und Vergleich der Felder, die enthalten den gleichen text, egal der Fall.

Wir geben Sie den folgenden Befehl ein:

beitreten -1 1 -2 2 -ich file-7.txt file-9.txt

Alle acht Linien sind aufeinander abgestimmt und trat erfolgreich.

Mix und Match

Beitreten, müssen Sie ein mächtiger Verbündeter, wenn Sie Ringen mit schwierigen Aufbereitung der Daten. Vielleicht müssen Sie die Daten analysieren, oder vielleicht sind Sie versucht, ihn zu massieren in der Form durchzuführen, ein import in ein anderes system.

Egal wie die situation ist, werden Sie froh, dass Sie join in deiner Ecke!

LESEN SIE WEITER

  • › Windows 10 ist ein Neues Update Ist Personen Löschen, die Dateien Wieder
  • › How to Save a PDF auf Ihr iPhone oder iPad
  • › Problembehandlung bei Bluetooth-Probleme unter Windows
  • › Was Ist Ambient Computing und Wie Wird Es Unser Leben Verändern?
  • › 6 Tipps für die Verwendung Ihres iPhone in der Nacht oder in der Dunkelheit