Câu lệnh cut
trong Linux là một công cụ mạnh mẽ để cắt và trích xuất các cột từ các file văn bản hoặc đầu vào từ đường ống (pipe). Dưới đây là các tip để sử dụng cut
hiệu quả:
- Cắt các cột từ file:
Để cắt một số cột từ một file văn bản, chúng ta có thể sử dụng tùy chọn -f
để chỉ định các số cột muốn trích xuất. Ví dụ: để cắt cột thứ 2 và thứ 3 từ một file có tên là file.txt
, ta sử dụng lệnh sau:
cut -f 2,3 file.txt
- Cắt các cột từ đầu vào từ đường ống:
Ngoài việc cắt các cột từ file, cut
cũng có thể cắt các cột từ đầu vào từ đường ống bằng cách sử dụng tùy chọn -
để chỉ định đầu vào từ đường ống. Ví dụ, để cắt cột thứ 1 và thứ 3 từ đầu vào từ đường ống, ta sử dụng lệnh sau:
echo "apple:orange:banana:grape" | cut -d ':' -f 1,3
- Cắt các ký tự từ một vị trí nhất định:
Để cắt các ký tự từ một vị trí nhất định, ta sử dụng tùy chọn -c
. Ví dụ, để cắt ký tự từ vị trí thứ 2 đến vị trí thứ 5 từ một file văn bản có tên là file.txt
, ta sử dụng lệnh sau:
cut -c 2-5 file.txt
- Sử dụng dấu phân cách khác nhau:
Mặc định, cut
sử dụng dấu tab làm dấu phân cách để cắt các cột. Nếu muốn sử dụng dấu phân cách khác, ta sử dụng tùy chọn -d
. Ví dụ, để cắt cột thứ 2 và thứ 3 từ một file văn bản có dấu phân cách là dấu cách, ta sử dụng lệnh sau:
cut -d ' ' -f 2,3 file.txt
- Cắt các dòng từ một file với các điều kiện nhất định:
Để cắt các dòng từ một file với các điều kiện nhất định trong Linux, ta có thể sử dụng lệnh grep
kết hợp với lệnh cut
.
Ví dụ: Ta có một file có tên là data.txt
chứa thông tin như sau:
name|age|gender
Alice|20|female
Bob|30|male
Charlie|25|male
Diana|22|female
Bây giờ, nếu muốn cắt ra danh sách các tên người có giới tính là “female”, ta có thể sử dụng lệnh sau:
Giải thích:
grep "female" data.txt
: Lọc ra các dòng chứa từ “female” từ filedata.txt
.cut -d "|" -f 1
: Cắt các giá trị trong các dòng đã lọc bởi ký tự “|” và chọn cột đầu tiên (ở đây là tên).
Kết quả sẽ trả về danh sách tên người có giới tính là “female”:
Alice
Diana