Làm cách nào tôi có thể sắp xếp tệp văn bản theo độ dài dòng trong notepad ++? Có bất kỳ plugin có sẵn cho các nhiệm vụ được đề cập?
Trong trường hợp không có plugin, hướng dẫn đầu tiên và có thể là thứ hai để đọc là gì, để tự viết plugin?
Làm cách nào tôi có thể sắp xếp tệp văn bản theo độ dài dòng trong notepad ++? Có bất kỳ plugin có sẵn cho các nhiệm vụ được đề cập?
Trong trường hợp không có plugin, hướng dẫn đầu tiên và có thể là thứ hai để đọc là gì, để tự viết plugin?
Câu trả lời:
Câu trả lời này được lấy cảm hứng từ một video YouTube . Cập nhật để duy trì thứ tự sắp xếp ban đầu, nếu đó là quan trọng.
Notepad ++ có một công cụ TextFX tích hợp sắp xếp các dòng được chọn theo thứ tự bảng chữ cái. Công cụ này có thể được tấn công để sắp xếp theo độ dài của các dòng bằng cách đặt khoảng trắng ở bên trái của mỗi dòng và đảm bảo rằng tất cả các dòng có cùng độ dài.
"Sở thú" xuất hiện theo thứ tự abc trước "Ngôi nhà của họ" bởi vì không gian được coi là một nhân vật và đến trước "i". __X
(giả vờ các dấu gạch dưới là không gian thực sự) sẽ tương tự đến theo thứ tự abc trước đó _XX
. Ý tưởng trong câu trả lời này là thêm khoảng trắng và số dòng để __________092dog
được sắp xếp ở trên _003alligator
.
Tôi sẽ sử dụng dữ liệu ví dụ sau:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Bước 1. Thêm số dòng.
(Lưu ý được thêm bởi barlop- một lưu ý cho người đọc về bước này, chúng tôi sẽ không sắp xếp theo các số dòng này, chúng tôi sắp xếp theo độ dài của các dòng. Nhưng lý do để thêm số dòng, là vì vậy chúng tôi biết thứ tự tự nhiên, ví dụ như khi hai dòng + có độ dài bằng nhau, chúng ta có thể sắp xếp các dòng đó theo thứ tự tự nhiên đó)
Giả sử tệp văn bản của bạn chỉ có dữ liệu trong đó, đặt con trỏ văn bản (dòng dọc) vào vị trí đầu tiên của tệp. Sau đó trong Edit
menu chọn Column Editor...
( Alt+ C). Chọn "Số để chèn" và bắt đầu bằng 1, tăng 1 và bao gồm các số 0 đứng đầu. Lưu ý rằng điều này sẽ giữ lại thứ tự ban đầu khi sắp xếp từ chuỗi ngắn nhất đến chuỗi dài nhất. Đảo ngược tất cả các dòng đầu tiên nếu bạn muốn sắp xếp dài nhất đến ngắn nhất.
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Bước 2. Pad tất cả các dòng với không gian hàng đầu.
Đặt con trỏ văn bản (dòng dọc) vào vị trí đầu tiên của tệp. Sau đó trong Edit
menu chọn Column Editor...
( Alt+ C). Chèn đủ khoảng trống để dòng dữ liệu ngắn nhất sẽ được đệm theo chiều dài của dòng dữ liệu dài nhất. Nếu dòng ngắn nhất của bạn có 4 ký tự và 44 ký tự dài nhất của bạn, thì hãy đảm bảo bạn chèn ít nhất 40 khoảng trắng.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Bước 3. Cắt đường thẳng đến một chiều dài đồng đều.
Sử dụng Tìm / Thay thế biểu thức chính quy sau đây ( Ctrl+ H) để khớp với các ký tự bên phải bằng hoặc vượt quá độ dài của dòng dữ liệu dài nhất của bạn.
^.*(.{50})$
Thay thế tất cả bằng $1
. Điều đó sẽ cắt mọi thứ trừ 50 ký tự bên phải của mỗi dòng. Nếu dữ liệu của bạn dài hơn (hoặc ngắn) hơn 50, hãy điều chỉnh {50}
Biểu thức thông thường.
(Lưu ý được thêm bởi barlop- ý tưởng ở đây là các dòng ngắn nhất có nhiều khoảng trống nhất ở đầu )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Bước 4. Sắp xếp các dòng.
Chọn tất cả các văn bản ( Ctrl+ A). Thông qua menu TextFX, đi đến Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Bây giờ dữ liệu của bạn phải theo thứ tự độ dài, từ ngắn nhất đến dài nhất. Nếu bạn muốn chúng theo thứ tự từ dài nhất đến ngắn nhất, bỏ Text FX > TextFX Tools > + Sort ascending
chọn tùy chọn trước khi sắp xếp. Lưu ý cách số dòng được đảo ngược là tốt.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Bước 5. Loại bỏ không gian hàng đầu.
Sử dụng Tìm / Thay thế biểu thức chính quy khác ( Ctrl+ H) để khớp với các khoảng trắng hàng đầu.
^ *\d{4}
Đó là khoảng trống giữa dấu mũ và dấu hoa thị. Thay thế tất cả bằng không có gì. Điều đó sẽ loại bỏ tất cả các khoảng trắng hàng đầu và số dòng được chèn, nếu bạn có số dòng gồm 4 chữ số. Thay thế {4}
bằng số chữ số chính xác trong số dòng của bạn.
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
Tôi đã ghi lại các bước trên bằng tính năng macro của Notepad ++ và nó không hoạt động. Tôi không chắc bước nào thất bại, nhưng tôi không chẩn đoán được tại sao. Bạn có thể có thể sử dụng AutoHotKey để tự động hóa việc này nếu bạn làm điều đó nhiều lần.
^ *\d{5}
hoặc bất kỳ số chữ số nào đã được sử dụng cho các số dòng.
Không, tôi không nghĩ là có. Gần nhất là plugin TextFx nhưng đó là một loại ký tự không dựa trên độ dài dòng. Đặt cược tốt nhất của bạn là ném văn bản vào một bảng tính và sắp xếp nó ở đó (sử dụng một cột được tính riêng bằng cách sử dụng LEN()
hàm).
Bạn có thể sử dụng SQL trong N ++ trong các tệp CSV! Ví dụ: nếu bạn có:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
, bạn có thể thực thi lệnh select * from data order by length(col1) desc
để sắp xếp giảm dần. "dữ liệu" có nghĩa là tập tin hiện tại. "col1" - tên của cột đầu tiên (và cuối cùng).
Thật không may, có thể có lỗi không cho phép từ bỏ dấu phân cách sau các dòng trong văn bản một cột.
Hoặc nếu bạn có linux và nedit:
ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'