Bài viết giải thích dùng lệnh uniq trong Linux tìm/lọc dòng trùng lặp trong file và cung cấp ví dụ sử dụng.
Lệnh uniq là lệnh đơn giản in ra hoặc bỏ qua dòng lặp lại trong input hoặc file cung cấp.
Cú pháp lệnh uniq
Cú pháp lệnh uniq:
uniq TUY_CHON INPUT OUTPUT
Lưu ý:
- TUY_CHON là danh sách tùy chọn từ bảng dưới
- INPUT đường dẫn file đọc
- *Standard input *cũng dùng được
- OUTPUT file lưu kết quả uniq
- Nếu không cấp, standard output dùng (mặc định in ra console)
Nếu không định nghĩa file input/output, dùng STDIN/STDOUT redirect cho uniq – xem bài này để biết cách.
Tùy chọn
Bảng dưới liệt kê tùy chọn thường dùng từ manual:
| Tùy chọn | Mô tả |
|---|---|
| -c | Prefix dòng bằng số lần xuất hiện |
| -d | Chỉ in dòng trùng lặp, một cho mỗi nhóm |
| -D | In tất cả dòng trùng lặp |
| -i | Bỏ qua chữ hoa/thường khi so sánh |
| -s | Bỏ qua N ký tự đầu khi so sánh |
| -u | Chỉ in dòng duy nhất (không trùng) |
Xem manual đầy đủ uniq bằng lệnh:
man uniq
Ví dụ lệnh uniq
File ví dụ
Các ví dụ dùng file sau làm input:
movies.txt
Dirty Harry Dirty Harry Total Recall Bride of Frankenstein Total Recall Demolition Man
Hành vi mặc định – Loại bỏ dòng lặp
Mặc định, uniq loại bỏ dòng lặp lại.
uniq movies.txt
Kết quả:
Dirty Harry Total Recall Bride of Frankenstein Total Recall Demolition Man
Lưu ý: dòng lặp bị loại. Không phải duplicate. Chỉ dòng liền kề, giống hệt bị loại.
Hiện số lần lặp
Tùy chọn -c thêm số lần lặp đầu mỗi dòng:
uniq -c movies.txt
Kết quả:
2 Dirty Harry 1 Total Recall 1 Bride of Frankenstein 1 Total Recall 1 Demolition Man
Chỉ hiện dòng KHÔNG lặp
Tùy chọn -u chỉ hiện dòng không lặp:
uniq -u movies.txt
Kết quả:
Total Recall Bride of Frankenstein Total Recall Demolition Man
Chỉ hiện dòng CÓ lặp
Tùy chọn -d chỉ hiện dòng lặp:
uniq -d movies.txt
Kết quả:
Dirty Harry
Lại lưu ý: dòng lặp được include/exclude. Không phải duplicate. Chỉ dòng liền kề, giống hệt được xử lý bởi uniq!
Lưu kết quả
Truyền filename tham số cuối để lưu kết quả:
uniq -d movies.txt duplicated.txt
Dùng Standard Redirection
Như đã nói, không bắt buộc cấp file input/output cho uniq.
Standard Redirection chuyển output lệnh khác tới uniq, output uniq chuyển tới lệnh/file khác.
cat movies.txt | uniq > output.txt
Ví dụ trên, cat đọc file – output pipe cho unique. uniq output redirect file bằng >.
Oviously, không thêm chức năng so với cấp đường dẫn input/output. Vẫn là ví dụ rõ ràng pipe/redirect output lệnh cho lệnh khác.