Câu trả lời:
Đó là những gì uniqlệnh tiêu chuẩn dành cho.
uniq your-file
Lưu ý rằng một số uniqtriển khai như GNU uniqsẽ cung cấp cho bạn đầu tiên của một chuỗi các dòng sắp xếp giống nhau (trong đó strcoll()trả về 0) trái ngược với byte giống hệt nhau (trong đó memcmp()hoặc strcmp()trả về 0). Để buộc so sánh byte với byte bất kể việc uniqtriển khai, bạn có thể buộc miền địa phương Cbằng:
LC_ALL=C uniq your-file
Vim có thể đạt được điều này độc đáo:
:g/\v^(.*\n)\1/d
Hoặc nếu bạn muốn sử dụng vim như một công cụ dòng lệnh, bạn có thể làm điều này như
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Bằng cách này, bạn không phải vật lộn với việc thoát vim sau này;)
Giải trình:
:g/
Trên tất cả các dòng phù hợp với regex này ...
\v^(.*\n)\1
Bất kỳ dòng nào theo sau nó ...
/d
chạy lệnh d elete (xóa dòng hiện tại). Các -c "wq"là để lưu các thay đổi và thoát.