Câu trả lời:
Sắp xếp các dòng theo thứ tự bảng chữ cái, nếu chúng chưa có và thực hiện các bước sau:
(dựa trên câu hỏi liên quan này: Làm cách nào để tìm và xóa các dòng trùng lặp khỏi tệp bằng Biểu thức chính quy? )
Control+F
Chuyển đổi "Chế độ thay thế"
Chuyển đổi "Sử dụng Cụm từ Thông dụng" (biểu tượng có .*
biểu tượng)
Trong trường tìm kiếm , nhập^(.*)(\n\1)+$
Trong trường " thay thế bằng ", nhập$1
Trong trường hợp này, hãy sử dụng giải pháp bên ngoài Mã VS (xem tại đây ) hoặc - nếu tài liệu của bạn không quá lớn và bạn không ngại gửi thư rác vào nút Thay thế Tất cả - hãy làm theo các bước trước, nhưng trong các bước 4 và 5, nhập những điều này:
(dựa trên Xóa các dòng trùng lặp cụ thể mà không cần sắp xếp )
Thận trọng: Chặn tệp có quá nhiều dòng (hơn 1000); có thể gây ra lỗi cho VS Code; có thể giới thiệu dòng trống trong một số trường hợp.
tìm kiếm :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
thay thế bằng :$1
và sau đó nhấp vào nút "Thay thế Tất cả" nhiều lần nếu có sự xuất hiện trùng lặp .
Bạn sẽ biết nó là đủ khi số lượng dòng ngừng giảm khi bạn nhấp vào nút. Điều hướng đến dòng cuối cùng của tài liệu để theo dõi điều đó.
^(.*)(\n\1)+$
. Sau khi loại bỏ các hàng trùng lặp, tôi muốn xem tất cả các hàng có cột đầu tiên trùng lặp trong csv và muốn sửa đổi regex.
\r?
chút từ câu trả lời khác là không thực sự cần thiết.
Đây là một phần mở rộng rất thú vị: Transformer
Đặc trưng:
Để xóa các dòng trùng lặp:
Loại bỏ các dòng trùng lặp khỏi tài liệu
Hoạt động trên lựa chọn hoặc khối hiện tại nếu không có lựa chọn
Tôi đã không chơi với nó nhiều ngoài lệnh "Unique Lines" nhưng nó có vẻ được thực hiện khá tốt (bao gồm cả việc thử ghi macro!).
Để thêm vào câu trả lời của @ Marc.2377.
Nếu thứ tự quan trọng và bạn không quan tâm đến việc bạn chỉ giữ lại dòng cuối cùng của các dòng trùng lặp, chỉ cần tìm kiếm regexp sau nếu bạn chỉ muốn xóa các dòng không trống trùng lặp
^(.+\n)(?=(?:.*\n)*?\1)
Nếu bạn cũng muốn xóa các dòng trống trùng lặp, hãy sử dụng *
thay thế+
^(.*\n)(?=(?:.*\n)*?\1)
và thay thế bằng không.
Thao tác này sẽ mất một dòng và cố gắng tìm thêm một số dòng (có thể là 0) tiếp theo là dòng chính xác đã lấy. Nó sẽ loại bỏ dòng đã lấy.
Đây chỉ là một bức ảnh regex. Không cần phải spam nút thay thế.
^(.+\n)(?=(?:.*\n)*?\1)
thay thế vì regex của bạn đã xóa một dòng trống mà nó không được mong đợi. Vẫn ủng hộ.
xxx(?=…)
là một trận đấu nhìn trước. Vì vậy, nó đảm bảo rằng bất cứ điều gì theo sau "xxx" khớp với "…", nhưng không nâng cao tìm kiếm. (?:…)
chỉ là một dấu ngoặc không được tính trong số lượng dấu ngoặc. .*\n
là một mẫu cho một dòng (có thể trống). *
nghĩa là có thể có vài dòng, thậm chí không có dòng nào. Các ?
sau dấu hoa thị ( *
) phương tiện mà chúng tôi muốn là vài dòng càng tốt. Như \1
sau biểu thức này, hiệu quả là chúng ta nhìn trước tất cả các dòng không khớp \1
cho đến khi chúng tôi tìm thấy một dòng khớp \1
. Tôi hy vọng điều này làm cho nó rõ ràng.
Tôi vừa gặp sự cố tương tự và tìm thấy gói Visual Studio Code "Sắp xếp dòng". Xem thị trường Mã Visual Studio để biết chi tiết (ví dụ: Sắp xếp các dòng ).
Gói này có tùy chọn "Sắp xếp dòng (duy nhất)", đã làm điều đó cho tôi. Chú ý đến bất kỳ khoảng trắng nào ở đầu / cuối dòng. Chúng ảnh hưởng đến việc các dòng được coi là duy nhất hay không.
Cài đặt tiện ích mở rộng DupChecker , nhấn F1và nhập "Kiểm tra trùng lặp".
Nó sẽ kiểm tra các bản sao và hỏi bạn có muốn xóa chúng hay không.
Hãy thử tìm và thay thế bằng một biểu thức chính quy .
Tìm thấy:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Thay thế:
$1$2
Có thể đưa ra một số phương sai trong nhóm đầu tiên.
Không thực sự trong Visual Studio Code, nhưng nếu nó hoạt động, nó hoạt động.
Nó không phải là câu trả lời tốt nhất, như bạn đã chỉ định Visual Studio Code, nhưng như tôi đã nói: Nếu nó hoạt động, nó hoạt động :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
khiến vscode của tôi bị lỗi .... Tôi đã thực hiện Tìm trong một tệp 229 dòng. :(