Lệnh uniq
trên Linux là lệnh giúp lọc và xử lý các dòng trùng lặp trong file văn bản, thường được dùng cùng sort
để phân tích dữ liệu hiệu quả hơn. Bài viết này sẽ giúp bạn hiểu rõ lệnh uniq
là gì, cú pháp sử dụng, và cách áp dụng trong thực tế. Mình sẽ hướng dẫn chi tiết 10 ví dụ phổ biến như xóa dòng trùng, đếm số lần lặp, lọc dòng duy nhất hay tùy biến so sánh bằng -f
, -s
, -w
. C.
Điểm chính cần nắm
- Lệnh uniq trên Linux là gì?: Giới thiệu tổng quan về lệnh
uniq
, công dụng chính và cách hoạt động trong Linux. - Cú pháp của lệnh uniq: Trình bày cú pháp chuẩn của
uniq
và các tùy chọn phổ biến. - 10 ví dụ về lệnh uniq trên Linux chi tiết: Tổng hợp các ví dụ cụ thể minh họa cách sử dụng
uniq
trong nhiều tình huống thực tế. - Vietnix – Giải pháp lưu trữ tối ưu cho website nhanh, ổn định và an toàn: Giới thiệu dịch vụ hosting tốc độ cao của Vietnix với hỗ trợ 24/7 và hệ thống máy chủ hiện đại.
- FAQ: Giải đáp những câu hỏi thường gặp liên quan đến lệnh
uniq
trên Linux.
Lệnh uniq trên Linux là gì?
Lệnh uniq
trên Linux là công cụ dòng lệnh dùng để phát hiện và loại bỏ các dòng trùng lặp liền kề trong file văn bản. Lệnh này thường được sử dụng để lọc dữ liệu đầu vào, hiển thị các dòng duy nhất hoặc chỉ những dòng bị lặp lại. Để lệnh uniq
hoạt động chính xác, dữ liệu đầu vào cần được sắp xếp trước để các dòng trùng nhau nằm sát nhau.
![Tất tần tật về lệnh uniq trên Linux [year] 15 Lệnh uniq trên Linux dùng để phát hiện và loại bỏ các dòng trùng lặp liền kề trong file văn bản](https://image.vietnix.vn/wp-content/uploads/2025/05/Lenh-uniq-la-gi.png)
Cú pháp của lệnh uniq
Cú pháp cơ bản:
uniq [OPTIONS] [INPUT_FILE] [OUTPUT_FILE]]
Giải thích:
OPTIONS
: Các tuỳ chọn để thay đổi cách hoạt động củauniq
(ví dụ-c
,-d
,-u
…).
: File văn bản chứa nội dung cần xử lý. Nếu không chỉ định,INPUT_FILE
uniq
đọc từ stdin (bàn phím hoặc đầu ra của lệnh khác).
: File lưu kết quả đầu ra. Nếu không chỉ định, kết quả được hiển thị ra stdout (màn hình terminal).OUTPUT_FILE
Các tùy chọn phổ biến của lệnh uniq
Tuỳ chọn | Mô tả |
---|---|
-c, --count | Hiển thị số lần xuất hiện của mỗi dòng. |
-d, --repeated | Chỉ in ra các dòng bị lặp lại (bỏ qua dòng duy nhất). |
-u, --unique | Chỉ in ra các dòng xuất hiện đúng một lần (bỏ qua dòng trùng). |
-i, --ignore-case | So sánh không phân biệt chữ hoa – chữ thường. |
-f, --skip-fields=N | Bỏ qua N trường đầu tiên khi so sánh (trường phân cách bằng khoảng trắng). |
-s, --skip-chars=N | Bỏ qua N ký tự đầu tiên khi so sánh dòng. |
-w N | Chỉ so sánh N ký tự đầu tiên của mỗi dòng. |
-z | Dùng ký tự NULL (\0 ) làm ký tự kết thúc dòng thay vì newline (hữu ích khi xử lý với xargs -0 ). |
10 ví dụ về lệnh uniq trên Linux chi tiết
- Xóa dòng trùng lặp
- Đếm số lần trùng lặp
- Hiển thị các dòng duy nhất (không trùng)
- Hiển thị tất cả các dòng trùng lặp
- Hiển thị dòng bị trùng lặp (mỗi dòng trùng chỉ in một lần)
- Bỏ qua N trường đầu dòng với -f
- Bỏ qua N ký tự đầu dòng với -s
- Giới hạn so sánh theo N ký tự đầu dòng với -w
- So sánh không phân biệt chữ hoa với chữ thường
- Output bằng NULL (-z)
Giả sử, hiện tại mình đang có file vietnix.txt
với nội dung như sau:
Vietnix cung cấp dịch vụ hosting chất lượng cao.
Vietnix cung cấp dịch vụ hosting chất lượng cao.
Vietnix hỗ trợ khách hàng 24/7.
Vietnix hỗ trợ khách hàng 24/7.
Vietnix hỗ trợ khách hàng 24/7.
Dịch vụ VPS tại Vietnix rất ổn định.
Dịch vụ VPS tại Vietnix rất ổn định.
Dịch vụ VPS tại Vietnix rất ổn định.
Dịch vụ VPS tại Vietnix rất ổn định.
![Tất tần tật về lệnh uniq trên Linux [year] 16 File vietnix.txt để làm ví dụ](https://image.vietnix.vn/wp-content/uploads/2025/05/File-vietnix.txt-de-lam-vi-du.png)
Xóa dòng trùng lặp
uniq vietnix.txt
Giải thích: Loại bỏ các dòng trùng lặp liên tiếp trong file vietnix.txt
. Các dòng không liền nhau sẽ không được loại bỏ trừ khi dùng thêm sort
.
![Tất tần tật về lệnh uniq trên Linux [year] 17 Xóa dòng trùng lặp](https://image.vietnix.vn/wp-content/uploads/2025/05/Xoa-dong-trung-lap.png)
Đếm số lần trùng lặp
uniq -c vietnix.txt
Giải thích: Hiển thị số lần mỗi dòng xuất hiện trong file, giúp thống kê nhanh số lượng dòng trùng.
![Tất tần tật về lệnh uniq trên Linux [year] 18 Đếm số lần trùng lặp](https://image.vietnix.vn/wp-content/uploads/2025/05/Dem-so-lan-trung-lap.png)
Khi dùng lệnh uniq -c
để đếm số lần trùng lặp, kết quả mặc định sẽ có dạng:
2 Vietnix cung cấp dịch vụ hosting chất lượng cao.
3 Vietnix hỗ trợ khách hàng 24/7.
4 Dịch vụ VPS tại Vietnix rất ổn định.
Nếu muốn tùy biến kết quả để chuyển thành dạng nội dung, số lần lặp — ví dụ:
Vietnix cung cấp dịch vụ hosting chất lượng cao., 2
Vietnix hỗ trợ khách hàng 24/7., 3
Dịch vụ VPS tại Vietnix rất ổn định., 4
Bạn hoàn toàn có thể kết hợp các lệnh sort
, uniq
, và awk
như sau:
sort vietnix.txt | uniq -c | awk '{count=$1; $1=""; sub(/^ +/, ""); print $0 ", " count}'
Hiển thị các dòng duy nhất (không trùng)
uniq -u vietnix.txt
Giải thích: In ra những dòng chỉ xuất hiện một lần, giúp lọc ra nội dung độc đáo.
![Tất tần tật về lệnh uniq trên Linux [year] 19 Hiển thị các dòng duy nhất (không trùng)](https://image.vietnix.vn/wp-content/uploads/2025/05/Hien-thi-cac-dong-duy-nhat-khong-trung.png)
Bởi hiện tại file vietnix.txt
hoàn toàn không có dòng nào chỉ xuất hiện 1 lần nên lệnh uniq sẽ không in gì ra màn hình.
Hiển thị tất cả các dòng trùng lặp
uniq -D vietnix.txt
Giải thích: In tất cả các dòng trùng lặp, không chỉ một dòng đại diện.
![Tất tần tật về lệnh uniq trên Linux [year] 20 Hiển thị tất cả các dòng trùng lặp](https://image.vietnix.vn/wp-content/uploads/2025/05/Hien-thi-tat-ca-cac-dong-trung-lap.png)
Hiển thị dòng bị trùng lặp (mỗi dòng trùng chỉ in một lần)
uniq -d vietnix.txt
Giải thích: In ra các dòng bị trùng xuất hiện liên tiếp, mỗi dòng chỉ được in một lần.
![Tất tần tật về lệnh uniq trên Linux [year] 21 Hiển thị dòng bị trùng lặp (mỗi dòng trùng chỉ in một lần)](https://image.vietnix.vn/wp-content/uploads/2025/05/Hien-thi-dong-bi-trung-lap-moi-dong-trung-chi-in-mot-lan.png)
Bỏ qua N trường đầu dòng với -f
Giả sử file vietnix_numbered.txt
có nội dung:
1 Vietnix cung cấp dịch vụ hosting chất lượng cao.
2 Vietnix cung cấp dịch vụ hosting chất lượng cao.
3 Vietnix hỗ trợ khách hàng 24/7.
4 Vietnix hỗ trợ khách hàng 24/7.
uniq -f 1 vietnix_numbered.txt
Giải thích: Bỏ qua trường số thứ tự đầu dòng khi so sánh, giúp loại bỏ dòng trùng dù số thứ tự khác nhau.
![Tất tần tật về lệnh uniq trên Linux [year] 22 Bỏ qua N trường đầu dòng với -f](https://image.vietnix.vn/wp-content/uploads/2025/05/Bo-qua-N-truong-dau-dong-voi-f.png)
Bỏ qua N ký tự đầu dòng với -s
Giả sử file vietnix_chars.txt
có nội dung:
***Vietnix cung cấp dịch vụ hosting.
###Vietnix cung cấp dịch vụ hosting.
@@@Dịch vụ VPS tại Vietnix ổn định.
%%%Dịch vụ VPS tại Vietnix ổn định.
uniq -s 3 vietnix_chars.txt
Giải thích: Bỏ qua 3 ký tự đầu dòng (***, ###, …), giúp so sánh chính xác phần nội dung sau các ký tự đặc biệt.
![Tất tần tật về lệnh uniq trên Linux [year] 23 Bỏ qua N ký tự đầu dòng với -s](https://image.vietnix.vn/wp-content/uploads/2025/05/Bo-qua-N-ky-tu-dau-dong-voi-s.png)
Giới hạn so sánh theo N ký tự đầu dòng với -w
Giả sử file vietnix_short.txt
có nội dung:
Vietnix cung cấp dịch vụ hosting.
Vietnix hỗ trợ khách hàng 24/7.
Vietnix dịch vụ VPS ổn định.
uniq -w 7 vietnix_short.txt
Giải thích: Chỉ so sánh 7 ký tự đầu dòng, các dòng bắt đầu giống nhau trong 7 ký tự sẽ được coi là trùng.
![Tất tần tật về lệnh uniq trên Linux [year] 24 Giới hạn so sánh theo N ký tự đầu dòng với -w](https://image.vietnix.vn/wp-content/uploads/2025/05/Gioi-han-so-sanh-theo-N-ky-tu-dau-dong-voi-w.png)
So sánh không phân biệt chữ hoa với chữ thường
Giả sử file vietnix_case.txt
có nội dung:
VIETNIX cung cấp hosting.
vietnix cung cấp hosting.
Vietnix hỗ trợ khách hàng.
uniq -i vietnix_case.txt
Giải thích: So sánh không phân biệt chữ hoa và thường, giúp loại bỏ các dòng giống nhau nhưng khác biệt về chữ hoa/thường.
![Tất tần tật về lệnh uniq trên Linux [year] 25 So sánh không phân biệt chữ hoa với chữ thường](https://image.vietnix.vn/wp-content/uploads/2025/05/So-sanh-khong-phan-biet-chu-hoa-voi-chu-thuong.png)
Output bằng NULL (-z)
uniq -z vietnix.txt
Giải thích: Xuất kết quả với dấu kết thúc dòng là ký tự NULL (\0
), thường dùng trong script để xử lý dữ liệu an toàn hơn với các dòng chứa ký tự đặc biệt.
Vietnix – Giải pháp lưu trữ tối ưu cho website nhanh, ổn định và an toàn
Vietnix cung cấp các dịch vụ hosting và VPS chất lượng cao, giúp website vận hành với tốc độ nhanh, hiệu suất ổn định và bảo mật vững chắc. Với đội ngũ kỹ thuật nhiều kinh nghiệm cùng hệ thống máy chủ hiện đại được đặt tại datacenter đạt chuẩn quốc tế, Vietnix cam kết mang đến trải nghiệm lưu trữ mượt mà và an toàn cho mọi khách hàng.
Bên cạnh đó, Vietnix còn nổi bật với chính sách hỗ trợ kỹ thuật 24/7, luôn sẵn sàng đồng hành cùng bạn trong suốt quá trình vận hành website, từ cá nhân, doanh nghiệp nhỏ đến hệ thống lớn cần khả năng mở rộng linh hoạt.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Tại sao uniq
không hoạt động đúng khi dữ liệu không được sắp xếp?
Vì uniq
chỉ loại bỏ những dòng trùng nhau liền kề. Nếu dữ liệu không được sort
, các dòng trùng nằm rải rác sẽ không bị phát hiện.
Có thể dùng uniq
để lọc dòng trong file CSV không?
Có, nếu chỉ thao tác với từng dòng nguyên vẹn hoặc dùng cut
để chọn cột trước khi uniq
. Tuy nhiên, cần chú ý định dạng phức tạp và dấu phân cách.
Cách kết hợp cut
, sort
, và uniq
để lọc thông tin cụ thể?
Dùng cut
để lấy cột dữ liệu, sort
để gom nhóm, rồi uniq
để lọc trùng hoặc đếm (`cut -d’,’ -f1 file.csv
uniq
có xử lý được file lớn hàng triệu dòng không?
uniq
hoạt động hiệu quả nếu dữ liệu đã được sort
. Tuy nhiên, với file rất lớn, nên dùng sort --parallel
và xử lý theo từng phần nếu cần.
Có cách nào lọc dòng trùng không phân biệt Unicode (ví dụ tiếng Việt có dấu và không dấu)?
Mặc định uniq
không xử lý Unicode chuẩn hóa. Có thể cần dùng iconv
, sed
hoặc script xử lý trước khi uniq
.
Làm sao kiểm tra dòng trùng ở cuối file khi dòng cuối không có newline?
Dòng cuối thiếu newline sẽ được xem là khác dòng. Cần đảm bảo file có newline đầy đủ hoặc dùng sed -e '$a\'
để thêm.
Lời kết
Khi sử dụng thành thạo lệnh uniq
, bạn có thể xử lý dữ liệu văn bản nhanh chóng, tối ưu quy trình phân tích log, lọc báo cáo hay làm sạch dữ liệu đầu vào. Nếu bạn có bất kỳ câu hỏi nào về lệnh uniq
, cú pháp nâng cao, hoặc các ví dụ chưa rõ trong bài, đừng ngần ngại để lại bình luận. Mình sẽ giải đáp cụ thể và chi tiết nhất có thể. Hoặc nếu bạn đang tìm kiếm giải pháp lưu trữ hiệu quả, đừng bỏ qua phần giới thiệu Vietnix bên dưới nhé.
Mọi người cũng xem: