Join

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

join - Slå samman filer rad för rad baserat på gemensamma fält

Kommandot `join` används för att slå samman två filer rad för rad baserat på gemensamma fält i Unix-liknande operativsystem.

Syntax

join [ALTERNATIV]... FIL1 FIL2

Beskrivning

Kommandot `join` läser två filer och slår samman rader som har gemensamma fält. Fälten som används för att matcha rader kan anges med ett specifikt alternativ. Om inga fält anges, används det första fältet i varje fil som standard.

Alternativ

Kommandot `join` stöder flera alternativ som kan användas för att justera hur filerna slås samman:

  • -a FILNUM - Skriv ut osammansatta rader från filnummer FILNUM (1 eller 2), som inte har matchning i den andra filen.
  • -e STR - Ersätt tomma utdatafält med STR.
  • -i, --ignore-case - Ignorera skiftlägeskänslighet vid jämförelser.
  • -j FÄLT - Använd FÄLT som det gemensamma fältet för både FIL1 och FIL2.
  • -o FORMAT - Ange utdataformatet; till exempel '0' för hela raden, '1.2' för andra fältet från första filen, '2.1' för första fältet från andra filen.
  • -t TECKEN - Använd TECKEN som fältseparator istället för mellanslag.
  • -v FILNUM - Skriv ut osammansatta rader endast från filnummer FILNUM (1 eller 2), som inte har matchning i den andra filen.
  • -1 FÄLT - Använd FÄLT som det gemensamma fältet i FIL1.
  • -2 FÄLT - Använd FÄLT som det gemensamma fältet i FIL2.
  • --check-order - Kontrollera att filerna är sorterade.
  • --nocheck-order - Kontrollera inte om filerna är sorterade.
  • --header - Hantera första raden i varje fil som en rubrikrad och skriv ut den okonverterad.
  • --help - Visa hjälpmeddelande och avsluta.
  • --version - Visa versionsinformation och avsluta.

Exempel

Här är några praktiska exempel som visar hur du kan använda `join`-kommandot:

  • För att slå samman två filer baserat på det första fältet:

join fil1.txt fil2.txt

  • För att använda det andra fältet i båda filerna som det gemensamma fältet:

join -1 2 -2 2 fil1.txt fil2.txt

  • För att skriva ut alla rader från den första filen, även om de inte har en matchning i den andra filen:

join -a 1 fil1.txt fil2.txt

  • För att använda ett kommatecken som fältseparator:

join -t ',' fil1.txt fil2.txt

  • För att ignorera skiftlägeskänslighet vid jämförelser:

join -i fil1.txt fil2.txt

Skillnader mellan macOS och Linux

Det finns några viktiga skillnader att tänka på när man använder `join`-kommandot på macOS jämfört med Linux:

  • Tillgänglighet: `join` är tillgängligt både på macOS och Linux, och de flesta alternativ fungerar likadant på båda plattformarna.
  • Alternativ: De flesta alternativ som finns på GNU-versionen av `join` är också tillgängliga på macOS, men det är bra att konsultera `man`-sidan på din specifika plattform för att vara säker.
  • Filsystem och textkodningar: Hanteringen av filsystem och textkodningar kan skilja sig något mellan macOS och Linux, vilket kan påverka hur tecken och fält behandlas.

Exempel på att använda `join` på macOS:

  • För att slå samman två filer baserat på det första fältet:

join fil1.txt fil2.txt

  • För att använda ett kommatecken som fältseparator:

join -t ',' fil1.txt fil2.txt

Det är alltid bra att konsultera `man`-sidan för `join` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.

Felsökning

Om du får ett felmeddelande när du använder `join`, kontrollera följande:

  • Att du använder rätt syntax och alternativ för ditt specifika kommando.
  • Att filerna du försöker slå samman är sorterade efter det gemensamma fältet.
  • Att de gemensamma fälten du försöker använda faktiskt existerar i båda filerna.

Se även

  • sort - Sortera rader av textfiler.
  • awk - Ett språk och verktyg för textbehandling.
  • paste - Slå samman filer sida vid sida.
  • comm - Jämför två sorterade filer rad för rad.

Källor