Bạn có thể sử dụng lệnh sortvới tùy chọn --unique:
sort -u input-file
Nếu bạn muốn ghi kết quả vào TẬP_TIN thay vì đầu ra tiêu chuẩn, hãy sử dụng tùy chọn --output=FILE:
sort -u input-file -o output-file
Lệnh uniqcũng có thể được áp dụng. Trong trường hợp này, các dòng giống hệt nhau phải là hệ quả, do đó, đầu vào phải được sắp xếp sơ bộ - cảm ơn @RonJohn cho ghi chú này :
sort input-file | uniq > output-file
Tôi thích sortlệnh cho các trường hợp tương tự, vì tính đơn giản của nó, nhưng nếu bạn làm việc với các mảng lớn, awkcách tiếp cận từ câu trả lời của John1024 có thể mạnh mẽ hơn. Dưới đây là so sánh thời gian giữa các phương pháp được đề cập, được áp dụng trên một tệp (dựa trên ví dụ trên) với gần 5 triệu dòng:
$ cat input-file | wc -l
20000000
$ TIMEFORMAT=%R
$ time sort -u input-file | wc -l
64
7.495
$ time sort input-file | uniq | wc -l
64
7.703
$ time awk '!a[$0]++' input-file | wc -l # from John1024's answer
64
1.271
$ time datamash rmdup 1 < input-file | wc -l # from αғsнιη's answer
64
0.770
Sự khác biệt quan trọng khác được mà đề cập bởi @Ruslan :
sort -usẽ chỉ in kết quả sau khi đầu vào kết thúc, trong khi awklệnh này sẽ in từng dòng kết quả mới một cách nhanh chóng (điều này có thể quan trọng hơn đối với đầu vào đường ống so với tệp).
Đây là một minh họa:

Trong ví dụ trên, vòng lặp (hiển thị bên dưới) tạo ra 500 kết hợp ngẫu nhiên, mỗi kết hợp có độ dài ba ký tự, của các chữ cái AD. Những kết hợp này được dẫn đến awkhoặc sort.
for i in {1..500}; do cat /dev/urandom | tr -dc A-D | head -c 3; echo; done