Xóa dòng trùng lặp
Dán danh sách vào, mọi dòng lặp lại sau lần xuất hiện đầu tiên sẽ bị xóa, còn các dòng còn lại giữ nguyên thứ tự ban đầu. Khi so khớp có thể bỏ qua chữ hoa/thường và khoảng trắng thừa, và mọi thao tác đều chạy ngay trong trình duyệt của bạn.
0 ký tự · 0 từ · 0 dòng
0 ký tự · 0 từ · 0 dòng
Chạy hoàn toàn trong tab trình duyệt này. Văn bản của bạn không bao giờ được tải lên hay lưu trữ.
Công cụ này làm gì
Xóa dòng trùng lặp giữ lần xuất hiện đầu tiên của mỗi dòng và bỏ các lần lặp lại sau đó, đồng thời giữ nguyên thứ tự ban đầu. Khi so khớp có thể bỏ qua chữ hoa/thường và khoảng trắng ở hai đầu, còn dòng trống có thể được giữ lại hoặc xóa đi.
đỏ xanh Đỏ vàng
đỏ xanh vàng
Ai cần lọc trùng danh sách và để làm gì
Dòng trùng lặp xuất hiện mỗi khi gộp các danh sách. Một nhân viên marketing ghép hai danh sách email đã xuất, một nhà nghiên cứu thu thập từ khóa từ nhiều công cụ, một lập trình viên gom URL từ các file log, một giáo viên dán tên từ ba biểu mẫu đăng ký: cuối cùng ai cũng có những mục xuất hiện hai lần trở lên. Bảng tính cũng xóa được dữ liệu trùng, nhưng bạn phải mở file, chọn cột và tìm đúng menu; dán vào một ô văn bản sẽ nhanh hơn khi dữ liệu đã nằm sẵn trong clipboard.
Giữ nguyên thứ tự ban đầu quan trọng hơn bạn nghĩ. Danh sách các bước, bảng xếp hạng hay các URL theo thứ tự được thu thập sẽ mất ý nghĩa nếu bị sắp xếp lại. Ở đây, lần xuất hiện đầu tiên được giữ nguyên vị trí và các lần lặp sau chỉ đơn giản bị loại bỏ, đồng thời bộ đếm cho biết đã xóa bao nhiêu dòng để bạn kiểm tra kết quả có hợp lý không.
Cách so khớp hoạt động và những khác biệt vô hình
Mỗi dòng được rút gọn thành một khóa so sánh và lưu vào một tập hợp (set) khi danh sách được đọc từ trên xuống dưới; dòng nào có khóa đã nằm trong tập hợp là dòng trùng. Chỉ cần một lượt duyệt, nên danh sách hàng trăm nghìn dòng vẫn được xử lý nhanh. Cách này cũng khác với lệnh uniq cổ điển của Unix, vốn chỉ xóa các dòng trùng nằm liền kề nhau nên thường phải chạy sau sort và làm mất thứ tự ban đầu. Câu lệnh awk awk '!seen[$0]++' cho kết quả giống công cụ này.
Hai dòng có thể trông giống hệt nhau mà vẫn khác nhau. Một khoảng trắng ở cuối dòng, một ký tự tab thay cho dấu cách, hoặc khoảng trắng không ngắt dòng sao chép từ trang web đều khiến máy tính coi chúng là hai chuỗi khác nhau. Hãy bật tùy chọn cắt khoảng trắng để bỏ qua khoảng trắng ở hai đầu mỗi dòng, kể cả khoảng trắng không ngắt dòng. Hãy tắt phân biệt chữ hoa chữ thường để coi "Paris" và "paris" là một mục; cách viết gặp đầu tiên sẽ được giữ lại. Dòng trống có thể được giữ để các đoạn vẫn tách biệt, hoặc xóa hoàn toàn.
Sau khi làm sạch
Danh sách đã lọc trùng thường cần được sắp xếp tiếp: Sắp xếp dòng có thể xếp theo thứ tự bảng chữ cái, thứ tự tự nhiên hoặc theo độ dài. Nếu danh sách đến từ file PDF hoặc email bị ngắt dòng lỗi, hãy sửa trước bằng các công cụ văn bản khác, vì một mục bị tách làm hai dòng sẽ không khớp với mục giống nó còn nguyên vẹn.
Câu hỏi thường gặp
- Bản nào của dòng trùng lặp được giữ lại?
- Dòng đầu tiên. Mọi dòng sau có cùng nội dung đều bị xóa, và các dòng còn lại giữ nguyên thứ tự ban đầu nên không có gì bị xáo trộn.
- Vì sao hai dòng trông giống hệt nhau lại không bị xóa?
- Chúng khác nhau ở điểm không nhìn thấy được, thường là khoảng trắng ở cuối dòng, ký tự tab hoặc khoảng trắng không ngắt dòng. Hãy bật tùy chọn cắt khoảng trắng, hoặc bỏ qua chữ hoa chữ thường nếu chỉ khác nhau ở cách viết hoa.
- Công cụ này khác lệnh uniq như thế nào?
- uniq chỉ bỏ một dòng khi nó lặp lại dòng ngay phía trên, nên thường phải dùng cùng sort. Công cụ này tìm dòng lặp ở bất kỳ vị trí nào trong văn bản và giữ nguyên thứ tự ban đầu.
- Có thể vừa xóa dòng trùng lặp vừa sắp xếp danh sách cùng lúc không?
- Hãy xóa dòng trùng ở đây rồi dán kết quả vào Sắp xếp dòng. Làm hai bước giúp bạn giữ thứ tự xuất hiện đầu tiên khi cần và chỉ sắp xếp khi bạn muốn.