Hur att Använda join-kommandot i Linux

0
260
Fatmawati Achmad Zaenuri/Shutterstock

Om du vill koppla data från två textfiler genom att matcha ett gemensamt fält, kan du använda Linux gå med kommandot. Det tillför ett stänk av dynamik till din statiska data filer. Vi kommer att visa hur du använder det.

Matchande Data I Filer

Data är kung. Företag, företag och hushåll lika köra på det. Men data lagras i olika filer och sammanställdes av olika människor är en smärta. Förutom att veta vilka filer som ska öppna för att hitta den information du vill ha, layout och format i filer är troligen att vara annorlunda.

Du har också att ta itu med den administrativa huvudvärk av vilka filer som behöver uppdateras, som behöver säkerhetskopieras, som är äldre, och som kan arkiveras.

Plus, om du behöver för att konsolidera data eller göra en analys över en hel uppsättning data, du har fått ett ytterligare problem. Hur gör du för att rationalisera data i olika filer innan du kan göra vad du behöver göra med det? Hur gör du närmar dig uppgifterna förberedelserna?

Den goda nyheten är att om filer aktie i minst ett gemensamt data-element, Linux-gå med kommandot kan dra dig ur dyn.

Data Filer

Alla uppgifter som vi ska använda för att demonstrera användningen av gå med kommandot är påhittad, som börjar med följande två filer:

katt file-1.txt
katt file-2.txt

Följande är innehållet i file-1.txt:

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

Vi har ett antal numrerade rader och varje rad innehåller följande information:

  • Ett antal
  • En första namn
  • Efternamn
  • En e-postadress
  • Personens kön
  • En IP-Adress

Följande är innehållet i file-2.txt:

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

Varje rad i file-2.txt innehåller följande information:

  • Ett antal
  • Efternamn
  • En e-postadress
  • Personens kön
  • En region i New York
  • En dollar värde

Gå med kommandot fungerar med “fält”, vilket i detta sammanhang innebär ett avsnitt av text som omges av mellanrum, i början av en rad, eller slutet på en rad. För att gå med i för att matcha upp linjer mellan de två filerna, varje rad måste innehålla ett gemensamt fält.

Därför kan vi bara matchen på ett fält om det förekommer i båda filerna. IP-adressen visas bara i en fil, så det är inte bra. Det första namnet visas bara i en fil, så vi kan inte använda det heller. Efternamnet är i båda filerna, men det skulle vara ett dåligt val, eftersom olika människor har samma efternamn.

Du kan inte binda data tillsammans med den manliga och kvinnliga poster, heller, eftersom de är alltför vaga. De regioner i New York och dollarn värden visas endast i en fil, också.

Vi kan dock använda den e-postadress eftersom det är närvarande i båda filerna, och var och en är unika för en individ. En snabb titt genom de filer som bekräftar också linjer i varje motsvara samma person, så att vi kan använda den linje som vårt område för att matcha (vi kommer att använda ett annat fält senare).

Observera att det är olika antal fält i två filer, vilket är bra—vi kan berätta gå med i vilket fält som ska användas från varje fil.

Men se upp för områden som regionerna i New York, i en kommaavgränsad fil, varje ord i namnet på en region som ser ut som ett fält. Eftersom vissa regioner har två eller tre ord som namn, du har faktiskt fått ett olika antal fält i samma fil. Det är okej, så länge du matchen på fälten som visas i linje inför New York-regioner.

Gå med Kommandot

För det första, det fält som du kommer att match ska sorteras. Vi har fått stigande siffror i både filer, så att vi uppfyller kriterierna. Som standard, gå med använder det första fältet i en fil, vilket är vad vi vill. En annan vettig standard är att gå förväntar sig det område som separatorer för att vara blanktecken. Igen, vi har fått det, så att vi kan gå vidare och skjuta upp ansluta sig.

Eftersom vi använder alla standardvärden, vårt kommando är enkel:

gå med file-1.txt file-2.txt

gå med anser filerna till “fil” och “file två” enligt den ordning som de anges på kommandoraden.

Utmatningen är som följer:

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

Produktionen är formaterat på följande sätt: Det gäller de linjer som var matchade på skrivs ut först, följt av den andra fält från filen, och sedan fält från filen två utan match området.

Osorterat Fält

Låt oss prova något som vi vet inte kommer att fungera. Vi ska sätta raderna i en fil i ordning så gå med kommer inte att kunna behandla ärendet på rätt sätt. Innehållet i file-3.txt är det samma som file-2.txt men linjen åtta är mellan linjer fem och sex.

Följande är innehållet i file-3.txt:

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

Vi skriv följande kommando för att försöka gå med i fil-3.txtto file-1.txt:

gå med file-1.txt file-3.txt

gå med rapporter om att den sjunde raden i file-3.txt är ur funktion, så det är inte bearbetas. Rad sju är den som börjar med nummer sex, som skulle komma innan åtta i en korrekt sorterade listan. Sjätte raden i filen (som börjar med “8 Odell”) var den sista bearbetas, så att vi ser det utgång för det.

Du kan använda –in-för alternativet om du vill se om det går är nöjd med sorteringen av a-filer—ingen sammanslagning kommer att prövas.

Vi gör det genom att skriva följande:

gå med –in-för file-1.txt file-3.txt

gå talar om i förväg att det kommer att bli ett problem med line sju av fil file-3.txt.

Filer med Saknade Linjer

I file-4.txt den sista raden har tagits bort, så det är inte en linje åtta. Innehållet är som följer:

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

Vi skriv följande och, något förvånande, gå inte klaga och processer för alla linjer man kan:

gå med file-1.txt file-4.txt

Produktionen listar sju samman linjer.

-En (print unpairable) alternativet talar om för delta att också skriva rader som inte kunde matchas.

Här kommer vi att skriva följande kommando för att berätta gå att skriva ut rader från filen som inte kan matchas till rader i filen två:

gå-1 file-1.txt file-4.txt

Finns det sju rader som matchade och linje åtta från fil är tryckt, oöverträffad. Det är inte varje samman information eftersom file-4.txt inte innehålla en rad åtta som det kunde matchas. Men åtminstone det visas fortfarande i produktion så att du vet att det inte har en match i file-4.txt.

Vi skriver följande -v (undertrycka gick linjer) kommandot visar alla rader som inte har en match:

delta -v file-1.txt file-4.txt

Vi ser att linjen åtta är den enda som inte har en match i filen två.

Matchande Andra Områden

Låt oss matcha två nya filer på ett område som inte är standard (område ett). Följande är innehållet i file-7.txt:

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

Och följande är innehållet i file-8.txt:

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

Den enda vettiga fält som ska användas för att gå med är de e-post-adress, som är ett område i den första filen och fält två i den andra. För att tillgodose detta, kan vi använda -1 fil (ett fält) och -2 (fil två fält) alternativ. Vi kommer att följa dessa med ett nummer som anger vilket fält i varje fil bör användas för att gå med.

Vi skriver följande att berätta gå att använda det första fältet i en fil och den andra i filen två:

gå med -1 1 -2 2 file-7.txt file-8.txt

De filer som är anslutna på den e-postadress som visas som det första fältet på varje rad i utskriften.

Med Hjälp Av Olika Fält Separatorer

Vad händer om du har filer med områden som är åtskilda av något annat än mellanslag?

Följande två filer är kommaavgränsad—den enda blanksteg mellan flera ord ortnamn:

katt file-5.txt
katt file-6.txt

Vi kan använda-t (avgränsare) för att berätta gå med vilket tecken som ska användas som fältseparator. I det här fallet, det är komma, så vi skriva följande kommando:

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

Alla linjer är matchade, och de utrymmen som finns bevarade i ortnamn.

Ignorerar Bokstaven Fall

En annan fil, file-9.txt är nästan identiska till file-8.txt. Den enda skillnaden är några av de e-postadresser som har en bokstav, som visas nedan:

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

När vi gick file-7.txt och file-8.txt det fungerade perfekt. Låt oss se vad som händer med file-7.txt och file-9.txt.

Vi skriver följande kommando:

gå med -1 1 -2 2 file-7.txt file-9.txt

Vi bara matchas sex rader. Skillnaderna i versaler och gemener hindrade de andra två e-postadresser som anslutit sig.

Vi kan dock använda den -jag (ignore case) möjlighet att gå med kraft att bortse från dessa skillnader och matcha fält som innehåller samma text, oavsett fallet.

Vi skriver följande kommando:

gå med -1 1 -2 2 -jag file-7.txt file-9.txt

Alla åtta linjer matchas och anslöt sig framgångsrikt.

Mixa och Matcha

I gå med, du har en mäktig allierad när du brottas med obekväma uppgifter som förberedelse. Kanske du behöver för att analysera data, eller kanske du försöker att massera in det i form för att utföra en import till ett annat system.

Oavsett hur situationen är, du kommer vara glad att du har med i ditt hörn!

LÄS NÄSTA

  • “Hur kan man Kontrollera Om Din iPhone Renoverades
  • “Windows-10: s Nya Uppdateringen Är att ta Bort Folkets Filer Igen
  • “Hur för att Spara en PDF-fil till Din iPhone eller iPad
  • “Felsökning av Problem med Bluetooth i Windows
  • “Vad Är Ambient Design, och Hur Kommer Det att Förändra Våra Liv?