Wstęp

Wstęp

Polecenie łączenia to kolejny przykład narzędzia do przetwarzania tekstu w ramach GNU/Linux. Polecenie łączy dwa pliki na podstawie pasujących linii zawartości znalezionych w każdym pliku. Korzystanie z polecenia połączenia jest dość proste i jeśli jest używane obecnie i we właściwej sytuacji może zaoszczędzić dużo czasu i wysiłku. Ten artykuł wymaga bardzo podstawowego doświadczenia w wierszu poleceń.

Często używane opcje

  • -1 pole
    Dołącz na określonym polu znalezionym w pliku 1
  • -2 pole
    Dołącz na określonym polu znalezionym w pliku 2
  • -T char
    Użyj Char jako separatora wejściowego i wyjściowego

Podstawy

Podstawowe użycie polecenia łączenia to użycie bez żadnych opcji. Wszystko wymagane jest określenie 2 plików jako argumentów. Powiedzmy, że mamy dwa pliki a.txt i b.TXT z następującą zawartością:

$ cat a.tekst 1 A 2 B 3 C $ cat b.tekst 1 John 2 Linda 3 Rares 

Tutaj widzimy, że pierwsze pole jest idealnym kandydatem do wykonywania operacji łączenia. Domyślnie polecenie połączenia wykonuje operację połączenia na pierwszym polu, w którym separator pola jest znakiem pojedynczym przestrzeni lub zakładką. Dlatego wykonując następujące polecenie Linux, nasze dwa pliki są połączone na podstawie pola 1:

$ dołącz a.txt b.tekst 1 A John 2 B Linda 3 C rzadki 

Wybór pola

W naszym poprzednim przykładzie możesz zobaczyć domyślną funkcję polecenia łączenia. W tej sekcji zobaczymy, w jaki sposób możemy określić inne pole, na którym polecenie połączenia powinno wykonać operację łączącą. Rozważmy następujące.txt i b.Pliki TXT:

$ cat a.tekst John A 1 Linda B 2 Rares C 3 $ cat b.tekst 1 A 2 B 3 C 

Jak widzimy, w tym przypadku my pierwsze domyślne pole połączenia nie dopasowuje się już. Dlatego wykonanie polecenia łączenia w tych dwóch plikach nie wytworzy żadnego wyjścia. Widzimy jednak, że drugie pole w pierwszym pliku jest zgodne z drugim polem w drugim pliku. W rezultacie możemy zmodyfikować domyślne zachowanie polecenia łączenia i dołączyć do obu plików na podstawie drugiego pola w każdym pliku:

$ dołącz -1 2 -2 2 a.txt b.tekst A John 1 1 B Linda 2 2 C Rares 3 3 

gdzie -1 jest pierwszym plikiem, a 2 to drugie pole, a -2 to drugi plik, a 2 to druga kolumna. W tym przypadku tylko dlatego, że oba pasujące pola są drugie, możemy użyć -j jako skrót.

$ dołącz -j 2 a.txt b.tekst A John 1 1 B Linda 2 2 C Rares 3 3 

Jak zauważyłeś już trzecie pole, a pierwsze pole w obu plikach można również użyć do operacji łączenia.

$ dołącz -1 2 -2 2 a.txt b.tekst A John 1 1 B Linda 2 2 C Rares 3 3 $ dołącz -1 3 -2 1 a.txt b.tekst 1 John A A 2 Linda B B 3 Rares C C 

Ważne jest, aby zwrócić uwagę na przykłady do przykładów, które polecenie połączenia zawsze wydrukują pasujące pole jako pierwsze.

Wybór ogranicznika pola

Nie wszystkie pliki są ładnie sformatowane do operacji polecenia łączenia. Jak wspomniano wcześniej, domyślnym ogranicznikiem pola jest przestrzeń. Ale co, jeśli mamy „” (przecinek) lub nawet tablica jako ogranicznik? Rozważmy następujące pliki:

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

W tym przypadku jedyną różnicą od poprzednich przykładów jest to, że separator pola to „”, ”. Aby poinformować, że połącz polecenie, którego separator pola użyć, możemy skorzystać z opcji -T, w stanie składnia jest taka sama:

$ dołącz -t, -1 3 -2 1 a.txt b.tekst 1, John, A, A 2, Linda, B, B 3, Rares, C, C 

Wiele przestrzeni

Jeśli twoje pliki mają wiele przestrzeni jako ograniczanie pola, najbezpieczniejszą opcją jest konwersja ich na pojedyncze ogranicznik przestrzeni. Na przykład dołączenie do tych plików może być dość trudne:

$ cat a.tekst John A 1 Linda B 2 Rares C 3 $ cat b.tekst 1 A 2 B 3 C 

Dlatego jeśli sytuacja pozwala na to, możesz przekonwertować ją na pojedynczy plik wyznaczony przez plik za pomocą polecenia SED:

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

Tab A Delimiter

Tab delimiter jest również akceptowany przez polecenie połączenia jako domyślne. Dlatego poniższy przykład przeprowadzi prawidłową operację łączenia:

$ cat a.txt b.tekst John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ dołącz -1 3 -2 1 a.txt b.tekst 1 John A A 2 Linda B B 3 Rares C C 

Ignorowanie spraw

Jeśli twoje dopasowanie jest w doskonałej kolejności, ale pola z obu plików mają górne i dolne różnice przypadków, połączenie nie wykona prawidłowej operacji połączenia i zignoruje niezrównane linie, chyba że używa się -i (ignoruj ​​przypadek). Zwróć uwagę na następującą niższą liczbę B w poniższym przykładzie:

$ cat a.txt b.tekst John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ dołącz -1 2 -2 2 a.txt b.tekst Jan 1 1 C rzadko 3 3 $ dołącz -i -1 2 -2 2 a.txt b.tekst A John 1 1 B Linda 2 2 C Rares 3 3 

Zastępowanie domyślnego formatu łączenia

W poniższym przykładzie zobaczymy, w jaki sposób możemy zastąpić domyślne zachowanie formatu polecenia połączenia. Rozważ wyjście do połączenia plików a.txt i b.tekst:

$ cat a.txt b.tekst John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ dołącz -1 2 -2 2 a.txt b.tekst A John 1 1 B Linda 2 2 C Rares 3 3 

Pole dołączające jest wydrukowane jako pierwsze. Co jeśli nie chcemy w ogóle drukować pola łączenia lub co, jeśli chcemy wydrukować połączone pole w innej kolejności. W takim przypadku opcja formatu -o staje się bardzo przydatna. W tym przykładzie wydrukujemy tylko pasujące pola:

  • Pierwsze pole w pierwszym pliku: 1.1
  • Pierwsze pole w drugim pliku: 2.1
$ dołącz -o 1.1 2.1 -1 2 -2 2 a.txt b.tekst John 1 Linda 2 Rares 3 

Linie bez par

Domyślnie tylko wiersze parowe są drukowane przez polecenie łączenia. -Opcja instruuje polecenie połączenia, aby zawierała również niezrównane wiersze. W następnym przykładzie wydrukujemy wszystkie niezrównane wiersze w pliku 1.

$ cat a.txt b.tekst John A 1 Linda B 2 Rares C 3 Lubos D 4 1 A 2 B 3 C 5 E $ dołącz -a 1 -o 1.1 2.1 -1 2 -2 2 a.txt b.tekst John 1 Linda 2 Rares 3 Lubos 

Lub koci drukujemy wszystkie linie nieupargalne z obu plików przez:

$ dołącz -a 1 -a 2 -o 1.1 2.1 -1 2 -2 2 a.txt b.tekst John 1 Linda 2 Rares 3 Lubos 5 

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Zagnieżdżone pętle w skryptach Bash
  • Obsługa danych wejściowych użytkownika w skryptach Bash
  • Podstawowe polecenia Linux
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Jak montować obraz ISO na Linux