Trong Linux, nếu bạn muốn in nội dung của một tệp trên stdout, lệnh đầu tiên xuất hiện trong đầu bạn là cat. Tuy nhiên, có thể có những lúc yêu cầu là xóa một phần nhất định của tệp và chỉ in phần còn lại của nội dung. Bạn sẽ vui mừng khi biết rằng có một công cụ - được gọi là cut - cho phép bạn thực hiện việc này.
Trong bài viết này, chúng ta sẽ thảo luận về công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Đây là nội dung trang hướng dẫn về tiện ích này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của tiện ích này.
Ví dụ, giả sử có một tệp có tên file1.txt chứa dòng sau:
Và bạn chỉ muốn hiển thị ba byte đầu tiên. Sau đó, trong trường hợp này, bạn có thể sử dụng tùy chọn -b theo cách sau:
Đầu ra sẽ là:
Bạn cũng có thể chỉ định một phạm vi:
Sau đây là đầu ra được tạo ra trong trường hợp này:
Tiếp theo, bạn cũng có thể sử dụng dấu gạch nối (-) với một số để yêu cầu lệnh cắt hiển thị tất cả các byte sau byte tại số đó hoặc tất cả các byte trước byte tại số đó.
Ví dụ: lệnh sau sẽ đảm bảo rằng tất cả các byte bao gồm và sau byte ở số 5 đều được hiển thị.
Và lệnh sau sẽ hiển thị 5 byte đầu tiên:
Ví dụ: ♣ là một ký tự đặc biệt chiếm nhiều byte. Vì vậy, nếu bạn muốn sử dụng lệnh cắt trên luồng văn bản chứa các loại ký tự này, thì tốt hơn là sử dụng -c thay vì -b. Về mặt chức năng, cả -c và -b đều hoạt động theo cách tương tự nhau.
Ví dụ, giả sử tệp đầu vào chứa các trường được phân tách bằng dấu phẩy:
Và bạn chỉ muốn mục đầu tiên và mục thứ ba, thì điều này có thể được thực hiện theo cách sau:
Lưu ý rằng tùy chọn -f cho phép bạn chọn các trường bạn muốn hiển thị.
Trong bài viết này, chúng ta sẽ thảo luận về công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Lệnh cắt Linux
Lệnh cắt trong Linux cho phép người dùng xóa các phần khỏi mỗi dòng tệp. Sau đây là cú pháp của lệnh này:
Mã:
cut OPTION... [FILE]...
Mã:
In các phần đã chọn của các dòng từ mỗi FILE ra đầu ra chuẩn.
Nếu không có FILE hoặc khi FILE là -, hãy đọc đầu vào chuẩn.
Câu hỏi 1. Làm thế nào để sử dụng lệnh cắt?
Lệnh cắt yêu cầu người dùng cung cấp danh sách các byte, ký tự hoặc trường. Bạn có thể cung cấp byte bằng tùy chọn dòng lệnh -b.Ví dụ, giả sử có một tệp có tên file1.txt chứa dòng sau:
Mã:
abcdefghijklmnopqrstuvwxyz
Mã:
cut file1.txt -b1,2,3
Mã:
abc
Mã:
cut file1.txt -b1-10
Mã:
abcdefghij
Ví dụ: lệnh sau sẽ đảm bảo rằng tất cả các byte bao gồm và sau byte ở số 5 đều được hiển thị.
Mã:
cut file1.txt -b5-
Mã:
cut file1.txt -b-5
Câu hỏi 2. Làm thế nào để xử lý các ký tự?
Đôi khi, tệp bạn truyền cho lệnh cắt chứa các ký tự có kích thước lớn hơn một byte. Trong trường hợp đó, bạn nên sử dụng tùy chọn -c cho phép công cụ hiểu chính xác các ký tự nào bạn muốn hiển thị hoặc xóa.Ví dụ: ♣ là một ký tự đặc biệt chiếm nhiều byte. Vì vậy, nếu bạn muốn sử dụng lệnh cắt trên luồng văn bản chứa các loại ký tự này, thì tốt hơn là sử dụng -c thay vì -b. Về mặt chức năng, cả -c và -b đều hoạt động theo cách tương tự nhau.
Câu hỏi 3. Lệnh cắt hoạt động như thế nào với các dấu phân cách?
Bạn cũng có thể khiến lệnh cắt hoạt động với các dấu phân cách. Đối với điều này, bạn có thể sử dụng tùy chọn dòng lệnh -d.Ví dụ, giả sử tệp đầu vào chứa các trường được phân tách bằng dấu phẩy:
Mã:
Howtoforge, HTF, howtoforge.com
FaqForge, FF, faqforge.com
Mã:
cut file1.txt -d, -f1,3