Câu trả lời:
Notepad ++ có thể làm điều này, miễn là bạn muốn sắp xếp theo dòng và xóa các dòng trùng lặp cùng một lúc.
Bạn sẽ cần plugin TextFX. Điều này từng được bao gồm trong các phiên bản cũ hơn của Notepad ++, nhưng nếu bạn có phiên bản mới hơn, bạn có thể thêm nó từ menu bằng cách đi tới Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install
. Trong một số trường hợp nó cũng có thể được gọi TextFX Characters
, nhưng đây là điều tương tự
Các hộp kiểm và nút yêu cầu sẽ xuất hiện trong menu bên dưới : TextFX -> TextFX Tools
.
Đảm bảo rằng "sắp xếp đầu ra duy nhất ..." được chọn. Tiếp theo, chọn một khối văn bản ( Ctrl+ Ađể chọn toàn bộ tài liệu). Cuối cùng, nhấp vào "sắp xếp dòng phân biệt chữ hoa chữ thường" hoặc "phân loại chữ hoa chữ thường"
Vì Notepad ++ Phiên bản 6, bạn có thể sử dụng regex này trong tìm kiếm và thay thế đối thoại:
^(.*?)$\s+?^(?=.*^\1$)
và thay thế bằng không có gì . Điều này để lại từ tất cả các hàng trùng lặp lần xuất hiện cuối cùng trong tệp.
Không cần sắp xếp cho điều đó và các hàng trùng lặp có thể ở bất cứ đâu trong tệp!
Bạn cần kiểm tra các tùy chọn "Biểu thức chính quy" và ". Phù hợp với dòng mới":
^
phù hợp với sự bắt đầu của dòng.
(.*?)
khớp với bất kỳ ký tự nào 0 lần trở lên, nhưng càng ít càng tốt (Nó khớp chính xác trên hàng, điều này là cần thiết vì tùy chọn ". khớp với dòng mới"). Hàng phù hợp được lưu trữ, vì các dấu ngoặc xung quanh và có thể truy cập bằng cách sử dụng\1
$
phù hợp với cuối dòng.
\s+?^
phần này khớp với tất cả các ký tự khoảng trắng (dòng mới!) cho đến khi bắt đầu hàng tiếp theo ==> Điều này sẽ loại bỏ dòng mới sau hàng phù hợp, để không có hàng trống nào sau khi thay thế.
(?=.*^\1$)
đây là một khẳng định nhìn tích cực. Đây là phần quan trọng trong regex này, một hàng chỉ được khớp (và loại bỏ), khi có chính xác cùng một hàng theo sau một nơi khác trong tệp.
. matches newline
đã làm.
Nếu các hàng ngay sau nhau thì bạn có thể sử dụng thay thế regex:
Mẫu tìm kiếm: ^(.*\r?\n)(\1)+
Thay thế bằng: \1
^(.*\r?\n)(\1)+
Notepad ++
-> Thay thế cửa sổ
Đảm bảo rằng trong chế độ Tìm kiếm, bạn đã chọn nút radio Biểu thức chính quy
Tìm cái gì:
^ (. *) (\ R? \ N \ 1) + $
Thay thế bằng:
$ 1
Trước:
và chúng tôi nghĩ rằng có
và chúng tôi nghĩ rằng có
dòng đơn
Có thể
Có thể
Sau:
và chúng tôi nghĩ rằng có
dòng đơn
Có thể
Nếu bạn không quan tâm đến thứ tự hàng (mà tôi không nghĩ là bạn làm), thì bạn có thể sử dụng hộp Linux / FreeBSD / Mac OS X / Cygwin và làm:
$ cat yourfile | sort | uniq > yourfile_nodups
Sau đó mở lại tệp trong Notepad ++.
'cat' is not recognized as an internal or external command, operable program or batch file.
cat yourfile | sort -Unique
Các phiên bản sau của Notepad ++ rõ ràng không bao gồm plugin TextFX. Để sử dụng plugin để sắp xếp / loại bỏ trùng lặp, plugin phải được tải xuống và cài đặt (tham gia nhiều hơn) hoặc được thêm bằng trình quản lý plugin.
A) Cách dễ dàng (như được mô tả ở đây ).
Plugin -> Trình quản lý plugin -> Hiển thị Trình quản lý plugin -> tab khả dụng -> Ký tự TextFX -> Cài đặt
B) Cách liên quan nhiều hơn, nếu cần một phiên bản khác hoặc cách dễ dàng không hoạt động.
Tải xuống plugin từ SourceForge:
http://doads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip
Mở tệp zip và giải nén NppTextFX.dll
Đặt NppTextFX.dll trong thư mục plugin của Notepad ++, chẳng hạn như:
C: \ Chương trình tập tin \ Notepad ++ \ plugin
Bắt đầu Notepad ++ và TextFX sẽ là một trong những mục trình đơn tệp (như được thấy trong Câu trả lời số 1 ở trên của Colin Pickard)
Sau khi cài đặt plugin TextFX, hãy làm theo các hướng dẫn trong Câu trả lời số 1 để sắp xếp và loại bỏ các bản sao.
Ngoài ra, hãy xem xét việc thiết lập một phím tắt bằng cách sử dụng Cài đặt> ánh xạ cắt nếu bạn sử dụng lệnh này thường xuyên hoặc muốn sao chép một phím tắt, chẳng hạn như F9 trong TextPad để sắp xếp.
C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX
. Khác hơn là điều này vẫn hoạt động tốt.
Trong phiên bản 7.8, bạn có thể thực hiện việc này mà không cần bất kỳ plugin nào - Chỉnh sửa -> Hoạt động dòng -> Xóa các dòng trùng lặp liên tiếp. Bạn sẽ phải sắp xếp tệp để đặt các dòng trùng lặp theo thứ tự liên tiếp trước khi nó hoạt động, nhưng nó hoạt động như một bùa mê.
Tùy chọn sắp xếp có sẵn trong Chỉnh sửa -> Hoạt động trực tuyến -> Sắp xếp theo ...
Bạn có thể cần một plugin để làm điều này. Bạn có thể thử dòng lệnh cc.ddl
(xóa các dòng trùng lặp) của ConyEdit . Nó là một plugin biên tập chéo cho các trình soạn thảo văn bản, bao gồm Notepad ++.
Với ConyEdit đang chạy trong nền, hãy làm theo các bước dưới đây:
cc.ddl
ở cuối văn bản. Tìm kiếm biểu thức chính quy: \b(\w+)\b([\w\W]*)\b\1\b
Thay thế bằng: $1$2
Nhấn nút Thay thế cho đến khi không còn kết quả trùng khớp cho biểu thức chính quy trong tệp của bạn.
Không ai làm việc cho tôi.
Một giải pháp là:
Thay thế
^(.*)\s+(\r?\n\1\s+)+$
với
\1
^(.*)\s+(\r?\n\1\s+)+$
và không ^(.*)\s*(\r?\n\1\s*)+$
?
Trình quản lý plugin hiện không khả dụng (không đi kèm với bản phân phối) cho Notepad ++. Bạn phải cài đặt thủ công ( https://github.com/bruderstein/nppPluginManager/release ) và ngay cả khi bạn làm như vậy, rất nhiều plugin không còn khả dụng nữa (không có TextFX).
Có thể có một plugin khác chứa các chức năng cần thiết. Ngoài ra, cách duy nhất để làm điều đó trong Notepad ++ là sử dụng một số đặc biệt regex cho phù hợp và sau đó thay thế ( Ctrl+ F→ Thay tab).
Mặc dù có nhiều chức năng có sẵn thông qua mục menu Chỉnh sửa (cắt xén, xóa các dòng trống, sắp xếp, chuyển đổi EOL), không có thao tác "duy nhất" nào khả dụng.
Nếu bạn có Windows 10 thì bạn có thể kích hoạt Bash (chỉ cần nhập Ubuntu vào Microsoft Store và làm theo hướng dẫn trong phần mô tả để cài đặt nó) và sử dụng cat your_file.txt | sort | uniq > your_file_edited.txt
. Tất nhiên, bạn phải ở trong cùng thư mục làm việc với "your_file.txt" hoặc tham chiếu đến nó thông qua đường dẫn của nó.