Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ lệnh uniq Linux: Hướng dẫn toàn diện & Ví dụ thực tế

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.