Lệnh join trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh join của Linux để hợp nhất hai hoặc nhiều tệp dựa trên một trường chung. Lệnh join là một công cụ mạnh mẽ để xử lý và chỉnh sửa văn bản, cho phép bạn kết hợp dữ liệu từ nhiều nguồn vào một đầu ra duy nhất. Bạn sẽ bắt đầu bằng cách hiểu mục đích và cú pháp của lệnh join, sau đó thực hành nối hai tệp dựa trên các trường chung và cuối cùng học cách nối nhiều tệp bằng lệnh này. Lab này bao gồm các ví dụ thực tế và cung cấp một sự hiểu biết toàn diện về chức năng của lệnh join, biến nó thành một kỹ năng có giá trị cho các tác vụ phân tích dữ liệu và quản lý tệp trong môi trường Linux.

Tìm hiểu Mục đích và Cú pháp của Lệnh join

Trong bước này, bạn sẽ tìm hiểu về mục đích và cú pháp của lệnh join trong Linux. Lệnh join được sử dụng để hợp nhất hai hoặc nhiều tệp dựa trên một trường chung.

Cú pháp cơ bản của lệnh join là:

join [options] file1 file2

Các tùy chọn phổ biến nhất là:

  • -t <char>: Chỉ định một ký tự phân tách để sử dụng thay vì khoảng trắng mặc định.
  • -i hoặc -I: Bỏ qua phân biệt chữ hoa chữ thường khi so sánh các trường.
  • -1 <field>: Nối trên trường được chỉ định từ tệp đầu tiên.
  • -2 <field>: Nối trên trường được chỉ định từ tệp thứ hai.

Hãy bắt đầu bằng cách tạo hai tệp mẫu để minh họa lệnh join:

$ cat file1.txt
1001 John
1002 Jane
1003 Bob
1004 Alice
$ cat file2.txt
1001 Sales
1002 Marketing
1003 IT
1004 HR

Ví dụ đầu ra:

1001 John Sales
1002 Jane Marketing
1003 Bob IT
1004 Alice HR

Trong ví dụ trên, lệnh join hợp nhất hai tệp dựa trên trường đầu tiên (ID nhân viên), tạo một dòng mới cho mỗi cặp bản ghi phù hợp.

Nối Hai Tệp Dựa trên Các Trường Chung

Trong bước này, bạn sẽ học cách nối hai tệp dựa trên một trường chung bằng lệnh join.

Hãy tạo thêm hai tệp mẫu để minh họa quy trình:

$ cat departments.txt
1001 Sales
1002 Marketing
1003 IT
1004 HR
$ cat employees.txt
1001 John
1002 Jane
1003 Bob
1004 Alice

Để nối các tệp departments.txtemployees.txt dựa trên trường đầu tiên (ID nhân viên), chúng ta có thể sử dụng lệnh sau:

$ join -t ' ' -1 1 -2 1 departments.txt employees.txt
1001 Sales John
1002 Marketing Jane
1003 IT Bob
1004 HR Alice

Các tùy chọn được sử dụng trong lệnh này là:

  • -t ' ': Sử dụng ký tự khoảng trắng làm dấu phân cách.
  • -1 1: Nối trên trường đầu tiên (ID nhân viên) trong tệp đầu tiên (departments.txt).
  • -2 1: Nối trên trường đầu tiên (ID nhân viên) trong tệp thứ hai (employees.txt).

Đầu ra hiển thị các bản ghi đã hợp nhất, với phòng ban và tên nhân viên tương ứng cho mỗi ID nhân viên.

Nối Nhiều Tệp bằng Lệnh join

Trong bước cuối cùng này, bạn sẽ học cách nối nhiều tệp bằng lệnh join.

Hãy tạo thêm một tệp mẫu để nối với các tệp trước đó:

$ cat locations.txt
1001 New York
1002 Los Angeles
1003 Chicago
1004 Miami

Để nối các tệp departments.txt, employees.txtlocations.txt dựa trên trường đầu tiên (ID nhân viên), chúng ta có thể sử dụng lệnh sau:

$ join -t ' ' -1 1 -2 1 departments.txt \
       | join -t ' ' -1 1 -2 1 - employees.txt \
       | join -t ' ' -1 1 -2 1 - locations.txt
1001 Sales John New York
1002 Marketing Jane Los Angeles
1003 IT Bob Chicago
1004 HR Alice Miami

Trong lệnh này, chúng ta sử dụng lệnh join ba lần, xâu chuỗi đầu ra của hai lệnh nối đầu tiên làm đầu vào cho lệnh nối thứ ba. Điều này cho phép chúng ta hợp nhất cả ba tệp dựa trên trường ID nhân viên chung.

Các tùy chọn được sử dụng trong lệnh này giống như bước trước:

  • -t ' ': Sử dụng ký tự khoảng trắng làm dấu phân cách.
  • -1 1: Nối trên trường đầu tiên (ID nhân viên) trong tệp đầu tiên.
  • -2 1: Nối trên trường đầu tiên (ID nhân viên) trong tệp thứ hai.

Đầu ra cuối cùng hiển thị các bản ghi đã hợp nhất, với phòng ban, tên nhân viên và địa điểm tương ứng cho mỗi ID nhân viên.

Tóm tắt

Trong lab này, bạn đã tìm hiểu về mục đích và cú pháp của lệnh join trong Linux, được sử dụng để hợp nhất hai hoặc nhiều tệp dựa trên một trường chung. Bạn bắt đầu bằng cách tạo các tệp mẫu và hiểu cú pháp cơ bản của lệnh join, bao gồm việc sử dụng các tùy chọn như -t, -i, -1-2 để chỉ định dấu phân cách, bỏ qua phân biệt chữ hoa chữ thường và chọn các trường để nối. Sau đó, bạn đã thực hành nối hai tệp dựa trên một trường chung, chứng minh cách lệnh join có thể hợp nhất các bản ghi từ các tệp khác nhau thành một đầu ra duy nhất.

400+ câu lệnh phổ biến trong Linux