Bài viết này sẽ giải thích cách sử dụng uniq lệnh trong Linux để tìm hoặc lọc các dòng lặp lại trong tệp và cung cấp một số ví dụ sử dụng.
uniq lệnh là một lệnh đơn giản xuất hoặc bỏ qua các dòng lặp lại trong đầu vào hoặc tệp được cung cấp.
uniq Cú pháp lệnh
Cú pháp cho uniq lệnh như sau:
uniq OPTIONS INPUT OUTPUT
Lưu ý rằng:
- TÙY CHỌN là danh sách các tùy chọn từ bảng bên dưới
- ĐẦU VÀO phải là đường dẫn đến tệp được đọc
- * Đầu vào chuẩn * cũng có thể được sử dụng
- ĐẦU RA phải là tệp trong đó kết quả của uniq lệnh được lưu
- Nếu không được cung cấp, đầu ra tiêu chuẩn sẽ được sử dụng (theo mặc định, điều này sẽ in kết quả ra bảng điều khiển)
Nếu tệp đầu vào hoặc đầu ra không được xác định, bạn có thể chuyển hướng đầu vào và đầu ra đến và đi từ uniq lệnh sử dụng STDIN và STDOUT - hãy xem bài viết này để biết thêm thông tin về cách thực hiện điều đó.
Tùy chọn
Bảng dưới đây liệt kê các tùy chọn thường được sử dụng từ hướng dẫn sử dụng:
-c | Các dòng tiền tố theo số lần xuất hiện |
-d | Chỉ in các dòng trùng lặp, một dòng cho mỗi nhóm |
-D | In tất cả các dòng trùng lặp |
-i | Bỏ qua sự khác biệt trong trường hợp khi so sánh |
-s | Tránh so sánh N ký tự đầu tiên |
-u | Chỉ in các dòng duy nhất |
Bạn có thể xem hướng dẫn sử dụng đầy đủ cho uniq lệnh bằng cách chạy:
man uniq
Ví dụ về lệnh uniq
Tệp ví dụ
Các ví dụ sau sẽ sử dụng tệp ví dụ sau làm đầu vào của chúng:
phim.txt
Dirty Harry Dirty Harry Total Recall Bride of Frankenstein Total Recall Demolition Man
Hành vi mặc định - Xóa các dòng lặp lại
Theo mặc định, uniq lệnh sẽ xóa các dòng lặp lại.
uniq movies.txt
Cái nào sẽ xuất ra:
Dirty Harry Total Recall Bride of Frankenstein Total Recall Demolition Man
Lưu ý rằng các dòng lặp lại sẽ bị xóa. Không trùng lặp. Chỉ các đường liền kề, giống hệt nhau mới bị xóa.
Hiển thị số lần lặp lại
Các -c tùy chọn sẽ thêm trước mỗi dòng với số lần nó được lặp lại:
uniq -c movies.txt
Kết quả đầu ra:
2 Dirty Harry 1 Total Recall 1 Bride of Frankenstein 1 Total Recall 1 Demolition Man
Chỉ hiển thị các dòng KHÔNG Lặp lại
Các -u tùy chọn sẽ chỉ hiển thị các dòng không được lặp lại:
uniq -u movies.txt
Cái nào sẽ xuất ra:
Total Recall Bride of Frankenstein Total Recall Demolition Man
Chỉ hiển thị các dòng được lặp lại
-d tùy chọn sẽ chỉ hiển thị các dòng lặp lại:
uniq -d movies.txt
Cái nào sẽ xuất ra:
Dirty Harry
Một lần nữa - Lưu ý rằng các dòng lặp lại được bao gồm hoặc loại trừ. Không trùng lặp dòng. Chỉ các đường liền kề, giống hệt nhau mới được xử lý bởi uniq lệnh!
Lưu kết quả
Chuyển tên tệp làm tham số cuối cùng cho lệnh để lưu kết quả vào tệp đó:
uniq -d movies.txt duplicated.txt
Sử dụng Chuyển hướng Tiêu chuẩn
Như đã đề cập ở trên, không cần thiết phải cung cấp các tệp đầu vào và đầu ra cho uniq lệnh.
Chuyển hướng tiêu chuẩn có thể hướng đầu ra của các lệnh và ứng dụng khác tới uniq, sau đó có thể có đầu ra của riêng nó được chuyển hướng đến chương trình hoặc tệp khác.
cat movies.txt | uniq > output.txt
Trong ví dụ trên, lệnh cat được sử dụng để đọc tệp ví dụ - và đầu ra của tệp đó sau đó được chuyển đến duy nhất yêu cầu. Sau đó, lệnh uniq có đầu ra của nó được chuyển hướng đến một tệp bằng cách sử dụng > nhà điều hành.
Rõ ràng, điều này không thực sự cung cấp bất kỳ chức năng bổ sung nào để chỉ cung cấp các đường dẫn đến các tệp đầu vào / đầu ra. Tuy nhiên, đó là một ví dụ rõ ràng về cách đầu ra từ các lệnh có thể được chuyển hướng / chuyển hướng đến những người khác.