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ầucut
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ầucut
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:
- 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. - 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. - 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
.