Câu trả lời:
Đó là những gì uniq
lệnh tiêu chuẩn dành cho.
uniq your-file
Lưu ý rằng một số uniq
triển khai như GNU uniq
sẽ 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 uniq
triển khai, bạn có thể buộc miền địa phương C
bằ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.