NỘI DUNG

Banner blog lễ 30.4 và 1.5

Tìm hiểu chi tiết về lệnh cut trong Linux

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:10/05/2025
Lượt xem

Đánh giá

5/5 - (1 bình chọn)

Lệnh cut trong Linux là một tiện ích dòng lệnh dùng để trích xuất các phần cụ thể từ một dòng văn bản trong tệp hoặc dữ liệu được truyền qua ống (pipe), dựa trên vị trí byte, ký tự hoặc trường được phân tách bởi ký tự xác định. Công cụ này giúp người dùng xử lý dữ liệu nhanh chóng, đặc biệt hữu ích khi cần tách cột trong file log, CSV hay kết quả lệnh. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh cut một cách chi tiết, kèm ví dụ minh họa dễ hiểu để áp dụng vào thực tế.

Những điểm chính

  • Cú pháp lệnh cut: Hiểu rõ cú pháp cơ bản của lệnh cut trong Linux, cách sử dụng để trích xuất dữ liệu nhanh chóng và chính xác từ dòng văn bản.
  • Cách dùng các tùy chọn phổ biến: Nắm được những tùy chọn quan trọng như -f, -d, -b, -c giúp bạn linh hoạt hơn khi xử lý văn bản theo byte, ký tự hoặc trường.
  • Ứng dụng qua ví dụ cụ thể: Làm quen với các ví dụ thực tế để thấy rõ cách cut hoạt động trong các tình huống khác nhau như phân tách cột, lấy dữ liệu từ dòng đầu ra.
  • Kết hợp lệnh cut nâng cao: Biết cách kết hợp cut với các lệnh khác như grep, sort, uniq để tạo ra các chuỗi xử lý dữ liệu mạnh mẽ trong shell.
  • Xử lý định dạng dữ liệu bất thường: Biết cách xử lý các trường hợp phức tạp, dữ liệu không chuẩn hoặc chứa ký tự phân cách không phổ biến.
  • Biết thêm Vietnix là nhà cung cấp dịch vụ lưu trữ uy tín.
  • Câu hỏi thường gặp: Làm rõ các vấn đề mà người mới thường gặp phải khi sử dụng lệnh cut và cách khắc phục hiệu quả.

Cú pháp lệnh lệnh cut trong Linux

Trước khi sử dụng lệnh cut, bạn cần đảm bảo một số điều kiện cơ bản:

  • Hệ thống đang chạy Linux.
  • Có quyền truy cập vào Terminal (dòng lệnh).

Sau khi đã sẵn sàng, bạn có thể sử dụng lệnh cut trong Linux với cú pháp đơn giản như sau:

cut [tùy chọn] [tên_tập_tin]

Trong đó:

  • [tùy chọn] là thành phần bắt buộc, quy định cách mà cut sẽ trích xuất dữ liệu, chẳng hạn theo byte, ký tự hoặc trường.
  • [tên_tập_tin] là tập tin cần xử lý. Nếu không chỉ định, lệnh cut sẽ đọc dữ liệu từ đầu vào chuẩn (standard input), thường dùng khi kết hợp với các lệnh khác trong pipeline.

Khi xử lý nhiều tập tin cùng lúc, cut sẽ gộp nội dung từ các tập tin đó rồi thực hiện thao tác cắt như yêu cầu. Tuy nhiên, nếu bỏ qua phần tùy chọn, lệnh sẽ báo lỗi và không thực thi được. Bên cạnh cut, bạn cũng có thể tìm hiểu thêm về lệnh awk – một công cụ mạnh mẽ khác dùng để định dạng và xử lý dòng dữ liệu đầu ra trong Linux.

Các tùy chọn lệnh cut trong Linux

Lệnh cut trong Linux đi kèm nhiều tùy chọn giúp bạn linh hoạt trong việc trích xuất dữ liệu từ dòng văn bản. Các tùy chọn này cho phép bạn cắt theo byte, ký tự hoặc trường, đồng thời xác định dấu phân cách đầu vào và đầu ra tùy ý. Dưới đây là bảng các tùy chọn phổ biến của cut:

Tùy chọnMô tả
-f hoặc --fields=LISTTrích xuất các trường (fields) dựa trên dấu phân cách.
-b hoặc --bytes=LISTCắt và lấy ra các byte theo danh sách chỉ định từ mỗi dòng đầu vào.
-c hoặc --characters=LISTTrích xuất các ký tự từ dòng đầu vào dựa theo chỉ định.
-d hoặc --delimiter=DELIMChỉ định dấu phân cách thay vì dùng tab mặc định.
--complementHiển thị tất cả các byte, ký tự hoặc trường ngoại trừ những phần được chọn.
-s hoặc --only-delimitedChỉ xử lý các dòng có chứa dấu phân cách, bỏ qua các dòng không có.
--output-delimiter=STRINGChỉ định dấu phân cách cho đầu ra, mặc định dùng cùng dấu phân cách với đầu vào.

Các tùy chọn -f, -b-c đều sử dụng tham số LIST để xác định vị trí dữ liệu cần lấy. LIST có thể là:

  • Một số đơn lẻ (ví dụ: 2),
  • Một danh sách các số, cách nhau bằng dấu phẩy (ví dụ: 1,3,5),
  • Hoặc một khoảng (range), như:
    • N- để lấy từ vị trí N đến hết dòng,
    • N-M để lấy từ vị trí N đến M,
    • -M để lấy từ đầu đến vị trí M.

Ví dụ về lệnh cut trong Linux

1. Lệnh cut trong Linux với Field Selection

Lệnh cut trong Linux cho phép trích xuất các phần cụ thể từ văn bản đầu vào dựa trên ký tự, byte hoặc trường. Đây là công cụ hữu ích khi xử lý các tệp có cấu trúc như CSV, TSV hoặc đầu ra từ các lệnh khác. Dưới đây là 3 phương pháp chọn trường phổ biến:

  • Lựa chọn trường dựa trên ký tự:

Sử dụng tùy chọn -c để chỉ định vị trí ký tự cần trích xuất. Trong đó, [LIST] là danh sách các ký tự muốn lấy từ mỗi dòng:

cut -c [LIST] [file]

Giả sử, bạn trích xuất ký tự đầu tiên và thứ năm từ mỗi dòng trong example.csv: cut -c1,5 example.csv. Nếu không chỉ định tệp, cut sẽ đọc từ đầu vào chuẩn, cho phép kết hợp với các lệnh khác.

Lệnh cut trong Linux - Nguồn: Internet
Lệnh cut trong Linux – Nguồn: Internet
  • Lựa chọn trường dựa trên độ lệch byte:

Tùy chọn -b giúp trích xuất dữ liệu theo byte:

cut -b [LIST] [file]
  • Lựa chọn trường dựa trên số trường:

Khi làm việc với tệp có trường phân cách rõ ràng như CSV, bạn có thể dùng -f để chọn trường, kết hợp với -d để chỉ định dấu phân cách: cut -d’,’ -f2 example.csv. Câu lệnh trên sẽ lấy cột thứ hai (độ tuổi) từ mỗi dòng trong tệp. Điểm quan trọng cần chú ý là cut chỉ hiển thị dữ liệu trích xuất và không thay đổi nội dung gốc của tệp.

Lựa chọn trường dựa trên số trường - Nguồn: Internet
Lựa chọn trường dựa trên số trường – Nguồn: Internet

Lệnh cut và tùy chọn phân cách

Lệnh cut sử dụng dấu phân cách để nhận biết các trường trong dữ liệu có cấu trúc. Điều này đặc biệt hữu ích khi xử lý các tệp như CSV, TSV hoặc log file.

  • Dấu phân cách mặc định: Mặc định, cut sử dụng ký tự tab làm dấu phân cách. Nếu dữ liệu của bạn không sử dụng tab, bạn cần chỉ định dấu phân cách mong muốn bằng tùy chọn -d.
  • Dấu phân cách tùy chỉnh: Để sử dụng dấu phân cách khác, cú pháp như sau: cut -d [delimiter] -f [field_number] [file]. Trong đó: [delimiter]: ký tự phân cách (ví dụ: dấu phẩy, dấu cách, dấu hai chấm,…)[field_number]: trường muốn lấy. Việc xác định đúng dấu phân cách là yếu tố then chốt để trích xuất chính xác dữ liệu bằng lệnh cut.

Lệnh cut trong Linux: Tùy chọn bổ sung

Bên cạnh các tùy chọn cơ bản, lệnh cut trong Linux còn hỗ trợ một số tùy chọn nâng cao giúp mở rộng khả năng xử lý và trích xuất dữ liệu. Dưới đây là hai tùy chọn quan trọng cần nắm:

  • Tùy chọn –complement: Tùy chọn này cho phép bạn hiển thị tất cả nội dung ngoại trừ phần được chỉ định. Đây là cách đơn giản để loại trừ các trường, ký tự hoặc byte cụ thể khỏi kết quả đầu ra.

Giả sử, bạn in tất cả các trường trừ trường đầu tiên trong tệp example.csv:

cut -f 1 --complement example.csv
In tất cả các trường trừ trường đầu tiên trong tệp example.csv - Nguồn: Internet
In tất cả các trường trừ trường đầu tiên trong tệp example.csv – Nguồn: Internet

Lệnh trên sẽ hiển thị tất cả các trường ngoại trừ cột thứ nhất. Tùy chọn –complement rất hữu ích khi bạn muốn loại bỏ một phần dữ liệu mà không cần xử lý phức tạp.

  • Tùy chọn –output-delimiter: Khi trích xuất nhiều trường bằng cut, đầu ra mặc định sẽ không có dấu phân cách giữa các trường. Để định nghĩa dấu phân cách tùy chỉnh trong đầu ra, bạn sử dụng tùy chọn –output-delimiter.

Giả sử, bạn muốn hiển thị trường 1 và 3 của example.csv, sử dụng dấu gạch dưới (_) làm phân cách:

cut -d',' -f1,3 --output-delimiter='_' example.csv
Hiển thị trường 1 và 3 của example.csv - Nguồn: Internet
Hiển thị trường 1 và 3 của example.csv – Nguồn: Internet

Lệnh trên giúp kết quả hiển thị rõ ràng và dễ đọc hơn, đặc biệt hữu ích khi bạn cần chuẩn hóa dữ liệu đầu ra cho các bước xử lý tiếp theo.

Kết hợp cut trong Linux với các lệnh khác

Kết hợp lệnh cut với các lệnh khác trong Linux là một cách mạnh mẽ để xử lý và trích xuất dữ liệu. Các lệnh kết hợp này giúp bạn linh hoạt hơn trong việc thao tác với dữ liệu đầu vào và xuất ra các thông tin cụ thể.

  • Kết hợp cut với ps để lọc các cột thông tin:

Bạn có thể sử dụng lệnh ps để liệt kê các tiến trình đang chạy, sau đó sử dụng cut để lọc và hiển thị các cột thông tin cụ thể như ID tiến trình (PID) và tên lệnh:

ps -e | cut -c1-5,25-

Lệnh này bao gồm các thành phần sau:

  • ps -e: Hiển thị tất cả các tiến trình đang chạy.
  • cut -c1-5,25-: Trích xuất các ký tự từ 1 đến 5 (PID) và từ ký tự 25 trở đi (tên lệnh).

Kết quả sẽ là danh sách các tiến trình với PID và tên lệnh từ các dòng đầu ra của lệnh ps.

  • Kết hợp cut với head hoặc tail để trích xuất các dòng và cột cụ thể

Bạn có thể sử dụng lệnh head hoặc tail để giới hạn số lượng dòng cần hiển thị, sau đó kết hợp với cut để trích xuất các cột cụ thể từ dữ liệu. Ví dụ, nếu bạn muốn lấy ba dòng đầu tiên và chỉ trích xuất các cột tên và thành phố (cột thứ nhất và thứ ba) từ tệp example.csv, bạn có thể sử dụng:

head -n 3 example.csv | cut -d ',' -f1,3

Lệnh này bao gồm các thành phần sau:

  • head -n 3 example.csv: Hiển thị ba dòng đầu tiên từ tệp example.csv.cut -d ','

  • -f1,3: Trích xuất cột đầu tiên và cột thứ ba từ các dòng đã chọn, sử dụng dấu phẩy (,) làm dấu phân cách.

-Kết quả là bạn sẽ chỉ nhận được ba dòng đầu tiên của tệp example.csv, với các trường tên và thành phố. Việc kết hợp cut với các lệnh khác giúp bạn xử lý dữ liệu một cách linh hoạt và tiết kiệm thời gian khi làm việc với các tệp hoặc đầu ra từ các lệnh trong Linux.

Lệnh cut trong Linux: Xử lý các định dạng dữ liệu bất thường

Mặc dù lệnh cut trong Linux rất mạnh mẽ và hiệu quả khi xử lý các tệp dữ liệu có cấu trúc rõ ràng, nhưng khi đối mặt với dữ liệu không đều đặn, lệnh này lại gặp khó khăn. Cụ thể, khi dữ liệu không có dấu phân cách cố định hoặc có các dấu phân cách không nhất quán, cut không phải là công cụ lý tưởng để xử lý. Tuy nhiên, vẫn có những cách để xử lý dữ liệu bất thường này bằng cách kết hợp cut với các công cụ khác hoặc điều chỉnh lệnh cho phù hợp:

  • Dữ liệu với khoảng trắng không đồng nhất:

Khi dữ liệu của bạn có nhiều khoảng trắng giữa các trường, lệnh cut sẽ gặp khó khăn trong việc nhận diện đúng các trường.

Xử lý dữ liệu với khoảng trắng không đồng nhất - Nguồn: Internet
Xử lý dữ liệu với khoảng trắng không đồng nhất – Nguồn: Internet

Trong trường hợp này, bạn có thể sử dụng lệnh tr để chuẩn hóa khoảng trắng. Ví dụ, khi có dữ liệu với khoảng trắng không đồng đều, bạn có thể thay thế nhiều khoảng trắng thành một khoảng trắng duy nhất, rồi sử dụng cut:

cat data.txt | tr -s ' ' | cut -d ' ' -f1,3
Thay thế nhiều khoảng trắng thành một khoảng trắng duy nhất - Nguồn: Internet
Thay thế nhiều khoảng trắng thành một khoảng trắng duy nhất – Nguồn: Internet

Lệnh này sẽ:

  • Dùng tr -s ' ' để thay thế tất cả các khoảng trắng liên tiếp thành một khoảng trắng duy nhất.
  • Sau đó, sử dụng cut để trích xuất trường đầu tiên và trường thứ ba.

Kết quả là các trường dữ liệu được trích xuất chính xác mà không bị lỗi do khoảng trắng thừa.

  • Dữ liệu với các dấu phân cách không nhất quán:

Đôi khi, dữ liệu có thể sử dụng nhiều loại dấu phân cách khác nhau như dấu phẩy, dấu cách, hoặc dấu chấm phẩy. Trong trường hợp này, bạn có thể sử dụng sed để chuyển đổi tất cả các dấu phân cách thành một loại dấu phân cách duy nhất, sau đó áp dụng cut. Ví dụ, với dữ liệu có cả dấu phẩy và dấu cách làm dấu phân cách:

sed 's/ /,/g' data.txt | cut -d ',' -f1,3

Lệnh này:

  • Dùng sed để thay thế tất cả các dấu cách ( ) thành dấu phẩy (,).
  • Sau đó, cut sẽ trích xuất các trường dữ liệu từ các dấu phẩy.

Kết quả là các trường dữ liệu được chuẩn hóa với dấu phân cách đồng nhất và trích xuất chính xác. Mặc dù cut không phải là công cụ tối ưu cho tất cả các tình huống xử lý dữ liệu không đều đặn, việc kết hợp với các công cụ khác như tr hoặc sed sẽ giúp bạn khắc phục được vấn đề và sử dụng cut hiệu quả hơn trong các tình huống này.

Vietnix – Nhà cung cấp dịch vụ lưu trữ uy tín, chất lượng

Vietnix tự hào là nhà cung cấp dịch vụ thuê VPS chất lượng cao, với hạ tầng máy chủ mạnh mẽ và 100% ổ cứng SSD, đảm bảo tốc độ truy cập nhanh và ổn định. Dịch vụ VPS Linux tại Vietnix mang lại sự linh hoạt tuyệt vời, cho phép bạn thay đổi cấu hình dễ dàng mà không ảnh hưởng đến các dịch vụ khác. Hệ thống bảo mật của chúng tôi được tối ưu với quyền truy cập phân quyền chặt chẽ và backup tự động hàng tuần, giúp bạn bảo vệ dữ liệu và khôi phục nhanh chóng. Liên hệ ngay!

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn 
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Câu hỏi thường gặp

Khi sử dụng lệnh cut, có cách nào để trích xuất trường không theo thứ tự mặc định không?

Khi sử dụng lệnh cut trong Linux, bạn không thể trích xuất các trường không theo thứ tự mặc định nếu chỉ dùng lệnh cut một mình. Tuy nhiên, có một số cách để làm điều này thông qua việc kết hợp với các công cụ khác:
Sử dụng lệnh awk: awk có khả năng trích xuất các trường dữ liệu không theo thứ tự nhất định, cho phép bạn chỉ định các trường một cách linh hoạt.
Ví dụ: awk -F',' '{print $1, $3, $2}' file.csv sẽ in ra trường 1, 3, và 2.
Kết hợp với cut: Bạn có thể sử dụng nhiều lệnh cut cùng lúc để trích xuất các trường không theo thứ tự, nhưng cách này có thể cần phải thực hiện nhiều bước. Ví dụ: cut -d',' -f1 file.csv | cut -d',' -f3. Tuy nhiên, cách này không thực sự linh hoạt như awk.
Vì vậy, nếu bạn cần trích xuất trường không theo thứ tự, awk sẽ là công cụ tối ưu hơn khi kết hợp với cut.

Cách sử dụng lệnh cut để xử lý các tập tin có dữ liệu không đồng nhất và không có dấu phân cách rõ ràng?

Để xử lý các tập tin có dữ liệu không đồng nhất và không có dấu phân cách rõ ràng bằng lệnh cut, bạn có thể kết hợp các lệnh như trsed để chuẩn hóa dữ liệu trước khi sử dụng cut:
Sử dụng tr để thay thế các khoảng trắng liên tiếp thành một khoảng trắng duy nhất.
Dùng sed để thay thế các dấu phân cách khác nhau thành một dấu phân cách duy nhất.
– Kết hợp cả tr, sedcut để xử lý dữ liệu phức tạp và trích xuất các trường cần thiết.
– Nếu dữ liệu phức tạp hơn, có thể sử dụng awk để chuẩn hóa dữ liệu trước khi áp dụng cut.

Lời kết

Lệnh cut trong Linux là một công cụ mạnh mẽ và hữu ích giúp người dùng trích xuất dữ liệu từ các tệp văn bản hoặc đầu vào từ dòng lệnh. Mặc dù cut hoạt động tốt với dữ liệu có cấu trúc và phân tách rõ ràng, nhưng khi làm việc với dữ liệu không đồng nhất, bạn cần kết hợp thêm các công cụ khác như tr hoặc awk để đạt hiệu quả cao nhất. Việc nắm vững cách sử dụng cut sẽ giúp bạn xử lý và phân tích dữ liệu nhanh chóng và chính xác hơn trong các tác vụ hàng ngày trên hệ thống Linux.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi 30 tháng 4
Khi mua Hosting/VPS
16/04/2025 - 16/05/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG