Lệnh cut trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh cut của Linux để trích xuất các cột hoặc trường cụ thể từ các tệp văn bản hoặc đầu ra của lệnh. Lab này bao gồm cú pháp và các tùy chọn cơ bản của lệnh cut, cũng như các ví dụ thực tế về trích xuất dữ liệu từ các tệp và sử dụng lệnh này với pipes. Đến cuối lab, bạn sẽ có thể thao tác và xử lý dữ liệu văn bản một cách hiệu quả bằng công cụ dòng lệnh mạnh mẽ này.

Lab này bao gồm ba bước chính: hiểu cú pháp và các tùy chọn của lệnh cut, trích xuất các cột cụ thể từ một tệp văn bản và sử dụng cut với pipes để xử lý dữ liệu. Các bước này cung cấp một giới thiệu toàn diện về lệnh cut và các trường hợp sử dụng khác nhau của nó, trang bị cho bạn kiến thức để làm việc hiệu quả với dữ liệu văn bản trong môi trường Linux.

Hiểu cú pháp và các tùy chọn của lệnh cut

Trong bước này, bạn sẽ tìm hiểu về cú pháp và các tùy chọn của lệnh cut trong Linux. Lệnh cut là một công cụ mạnh mẽ để trích xuất các cột hoặc trường cụ thể từ một tệp văn bản hoặc đầu ra của một lệnh.

Để hiểu cú pháp cơ bản của lệnh cut, hãy bắt đầu với một ví dụ đơn giản:

cut -d ' ' -f 2,4 file.txt

Trong lệnh này:

  • cut là tên lệnh
  • -d ' ' chỉ định dấu phân cách (trong trường hợp này là một khoảng trắng) để sử dụng khi tách đầu vào
  • -f 2,4 yêu cầu cut trích xuất trường (cột) thứ 2 và thứ 4 từ mỗi dòng

Ví dụ về đầu ra:

field2 field4
another_field2 another_field4

Lệnh cut cũng hỗ trợ một số tùy chọn khác:

  • -c: Trích xuất các ký tự thay vì các trường
  • -b: Trích xuất các byte thay vì các trường
  • --complement: Chọn phần bù của tập hợp các byte, ký tự hoặc trường
  • -s: Chỉ xuất các dòng có ký tự phân cách

Hãy thử một ví dụ khác sử dụng tùy chọn -c để trích xuất các ký tự:

cut -c 1-5,10-15 file.txt

Ví dụ về đầu ra:

field
another_field

Lệnh này trích xuất các ký tự từ vị trí 1 đến 5 và 10 đến 15 từ mỗi dòng trong tệp.

Trích xuất các cột cụ thể từ một tệp văn bản

Trong bước này, bạn sẽ học cách sử dụng lệnh cut để trích xuất các cột cụ thể từ một tệp văn bản.

Hãy bắt đầu bằng cách tạo một tệp dữ liệu mẫu:

echo "Name,Age,City" > data.txt
echo "John,25,New York" >> data.txt
echo "Jane,30,London" >> data.txt
echo "Bob,35,Paris" >> data.txt

Bây giờ, hãy trích xuất các cột tên và thành phố từ tệp:

cut -d ',' -f 1,3 data.txt

Ví dụ về đầu ra:

Name,City
John,New York
Jane,London
Bob,Paris

Trong lệnh này:

  • -d ',' chỉ định dấu phẩy làm dấu phân cách để tách đầu vào
  • -f 1,3 yêu cầu cut trích xuất trường (cột) thứ 1 và thứ 3

Bạn cũng có thể sử dụng tùy chọn --output-delimiter để thay đổi dấu phân cách trong đầu ra:

cut -d ',' -f 1,3 --output-delimiter=' - ' data.txt

Ví dụ về đầu ra:

Name - City
John - New York
Jane - London
Bob - Paris

Bây giờ, hãy thử trích xuất một phạm vi các cột:

cut -d ',' -f 2-3 data.txt

Ví dụ về đầu ra:

Age,City
25,New York
30,London
35,Paris

Lệnh này trích xuất cột thứ 2 và thứ 3 (Tuổi và Thành phố) từ dữ liệu.

Sử dụng lệnh cut với Pipe để xử lý dữ liệu

Trong bước này, bạn sẽ học cách sử dụng lệnh cut kết hợp với pipes để xử lý dữ liệu từ nhiều nguồn khác nhau.

Hãy bắt đầu bằng cách tạo một tệp dữ liệu mẫu:

echo "Name,Age,City" > data.txt
echo "John,25,New York" >> data.txt
echo "Jane,30,London" >> data.txt
echo "Bob,35,Paris" >> data.txt

Bây giờ, hãy sử dụng lệnh cut với một pipe để trích xuất các cột tên và thành phố từ dữ liệu:

cat data.txt | cut -d ',' -f 1,3

Ví dụ về đầu ra:

Name,City
John,New York
Jane,London
Bob,Paris

Trong ví dụ này, chúng ta sử dụng lệnh cat để hiển thị nội dung của tệp data.txt, sau đó chuyển đầu ra đến lệnh cut để trích xuất các cột mong muốn.

Bạn cũng có thể sử dụng lệnh cut với các lệnh khác, chẳng hạn như grep, để lọc dữ liệu:

cat data.txt | grep "New York" | cut -d ',' -f 1,3

Ví dụ về đầu ra:

Name,City
John,New York

Lệnh này trước tiên sử dụng grep để lọc dữ liệu cho các dòng chứa "New York", sau đó sử dụng cut để trích xuất các cột tên và thành phố từ đầu ra đã lọc.

Một ví dụ khác là sử dụng cut với awk để thực hiện xử lý dữ liệu phức tạp hơn:

cat data.txt | awk -F ',' '{print $1, "is", $2, "years old and lives in", $3}' | cut -d ' ' -f 1,3,5,7

Ví dụ về đầu ra:

John is 25 years old and lives in New York
Jane is 30 years old and lives in London
Bob is 35 years old and lives in Paris

Trong ví dụ này, chúng ta sử dụng awk để phân tách đầu vào bằng dấu phẩy và xây dựng một chuỗi đầu ra mới, sau đó chúng ta chuyển qua cut để trích xuất các trường mong muốn.

Tóm tắt

Trong lab này, bạn đã học về cú pháp và các tùy chọn của lệnh cut trong Linux, đây là một công cụ mạnh mẽ để trích xuất các cột hoặc trường cụ thể từ một tệp văn bản hoặc đầu ra của một lệnh. Bạn cũng đã học cách sử dụng lệnh cut để trích xuất các cột cụ thể từ một tệp văn bản, bao gồm khả năng thay đổi dấu phân cách trong đầu ra.

Lab này bao gồm các điểm chính sau:

  1. Hiểu cú pháp cơ bản của lệnh cut, bao gồm việc sử dụng tùy chọn -d để chỉ định dấu phân cách và tùy chọn -f để chọn các trường cần trích xuất.
  2. Khám phá các tùy chọn bổ sung như -c để trích xuất các ký tự thay vì các trường và --complement để chọn phần bù của tập hợp các byte, ký tự hoặc trường.
  3. Trình bày cách trích xuất các cột cụ thể từ một tệp văn bản bằng lệnh cut và cách tùy chỉnh dấu phân cách đầu ra bằng tùy chọn --output-delimiter.

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