Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Lệnh uniq trong Linux - Hướng dẫn và Ví dụ

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.