ฉันจะจัดเรียงไฟล์ข้อความตามความยาวบรรทัดใน notepad ++ ได้อย่างไร มีปลั๊กอินสำหรับงานดังกล่าวหรือไม่?
ในกรณีที่ไม่มีปลั๊กอิน, การสอนครั้งแรกและครั้งที่สองคืออะไร, ในการเขียนปลั๊กอินตัวเอง?
ฉันจะจัดเรียงไฟล์ข้อความตามความยาวบรรทัดใน notepad ++ ได้อย่างไร มีปลั๊กอินสำหรับงานดังกล่าวหรือไม่?
ในกรณีที่ไม่มีปลั๊กอิน, การสอนครั้งแรกและครั้งที่สองคืออะไร, ในการเขียนปลั๊กอินตัวเอง?
คำตอบ:
คำตอบนี้เป็นแรงบันดาลใจจากวิดีโอ YouTube อัปเดตเพื่อรักษาลำดับการจัดเรียงดั้งเดิมหากเป็นสิ่งสำคัญ
Notepad ++ มีเครื่องมือ TextFX ในตัวที่เรียงลำดับบรรทัดที่เลือกตามตัวอักษร เครื่องมือนี้สามารถถูกแย่งชิงเพื่อจัดเรียงตามความยาวของบรรทัดโดยการเว้นช่องว่างทางด้านซ้ายของแต่ละบรรทัดและตรวจสอบให้แน่ใจว่าบรรทัดทั้งหมดมีความยาวเท่ากัน
"สวนสัตว์" มาตามลำดับตัวอักษรก่อน "บ้านของพวกเขา" เพราะพื้นที่จะถือว่าเป็นตัวละครและมาก่อน "ฉัน" __X
(ทำท่าขีดจริงๆช่องว่าง) _XX
ในทำนองเดียวกันจะมาตามลำดับตัวอักษรก่อน ความคิดในคำตอบนี้คือการเพิ่มช่องว่างและหมายเลขบรรทัดเพื่อที่จะเรียงลำดับข้างต้น__________092dog
_003alligator
ฉันจะใช้ข้อมูลตัวอย่างต่อไปนี้:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
ขั้นตอนที่ 1 เพิ่มหมายเลขบรรทัด
(หมายเหตุเพิ่มโดย barlop- หมายเหตุสำหรับผู้อ่านเกี่ยวกับขั้นตอนนี้เราจะไม่เรียงลำดับตามหมายเลขบรรทัดเหล่านี้เรากำลังจัดเรียงตามความยาวของบรรทัด แต่เหตุผลในการเพิ่มหมายเลขบรรทัดคือเรา รู้ลำดับธรรมชาติดังนั้นเมื่อตัวอย่างสองเส้นมีความยาวเท่ากันเราสามารถเรียงลำดับเส้นเหล่านั้นตามลำดับธรรมชาตินั้น)
สมมติว่าไฟล์ข้อความของคุณมีข้อมูลอยู่ในนั้นให้วางเคอร์เซอร์ข้อความ (เส้นแนวตั้ง) ลงในตำแหน่งแรกสุดของไฟล์ จากนั้นในEdit
เมนูให้เลือกColumn Editor...
( Alt+ C) เลือก "จำนวนที่จะแทรก" และเริ่มต้นด้วย 1 เพิ่มขึ้น 1 และรวมศูนย์นำ โปรดทราบว่าสิ่งนี้จะรักษาลำดับเดิมเมื่อเรียงลำดับจากสตริงที่สั้นที่สุดไปยังสตริงที่ยาวที่สุด ย้อนกลับทุกบรรทัดก่อนถ้าคุณต้องการเรียงลำดับที่ยาวที่สุดถึงสั้นที่สุด
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
ขั้นตอนที่ 2 Pad ทุกบรรทัดด้วยช่องว่างนำหน้า
วางเคอร์เซอร์ข้อความ (เส้นแนวตั้ง) ลงในตำแหน่งแรกสุดของไฟล์ จากนั้นในEdit
เมนูให้เลือกColumn Editor...
( Alt+ C) แทรกที่ว่างเพียงพอเพื่อให้บรรทัดที่สั้นที่สุดของข้อมูลถูกขีดออกไปตามความยาวของบรรทัดที่ยาวที่สุดของข้อมูล หากบรรทัดที่สั้นที่สุดของคุณมี 4 ตัวอักษรและ 44 ที่ยาวที่สุดของคุณให้แน่ใจว่าคุณแทรกอย่างน้อย 40 ช่องว่าง
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
ขั้นตอนที่ 3 ตัดแต่งเส้นให้มีความยาวเท่ากัน
ใช้การค้นหา / แทนที่นิพจน์ปกติต่อไปนี้ ( Ctrl+ H) เพื่อจับคู่อักขระทางขวาเท่ากับหรือเกินความยาวของบรรทัดข้อมูลที่ยาวที่สุดของคุณ
^.*(.{50})$
$1
แทนที่ทั้งหมดที่มี ที่จะตัดทุกอย่างยกเว้นอักขระที่ถูกต้องสูงสุด 50 ตัวของทุกบรรทัด หากข้อมูลของคุณยาวกว่า (หรือสั้น) กว่า 50 ให้ปรับ{50}
ในนิพจน์ปกติ
(หมายเหตุเพิ่มโดย barlop - แนวคิดที่นี่คือบรรทัดที่สั้นที่สุดมีช่องว่างมากที่สุดในตอนเริ่มต้น )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
ขั้นตอน 4. เรียงลำดับบรรทัด
เลือกข้อความทั้งหมด ( Ctrl+ A) ผ่านเมนู TextFX Text FX > TextFX Tools > Sort lines case sensitive (at column)
ไปที่ ข้อมูลของคุณควรอยู่ในลำดับความยาวตั้งแต่สั้นไปจนถึงยาว หากคุณต้องการให้เรียงลำดับจากยาวที่สุดถึงสั้นที่สุดให้ยกเลิกการText FX > TextFX Tools > + Sort ascending
เลือกตัวเลือกก่อนที่จะเรียงลำดับ สังเกตว่ามีการกลับรายการหมายเลขบรรทัดด้วยเช่นกัน
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
ขั้นตอน 5. ลบช่องว่างนำหน้า
ใช้การค้นหา / แทนที่นิพจน์ปกติอื่น ( Ctrl+ H) เพื่อจับคู่ช่องว่างนำหน้า
^ *\d{4}
นั่นคือช่องว่างระหว่างเครื่องหมายรูปหมวกกับดอกจัน แทนที่ทั้งหมดด้วยอะไร สิ่งนั้นจะลบช่องว่างนำหน้าและหมายเลขบรรทัดที่แทรกหากคุณมีหมายเลขบรรทัด 4 หลัก แทนที่{4}
ด้วยจำนวนตัวเลขที่ถูกต้องในหมายเลขบรรทัดของคุณ
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MACRO
ฉันบันทึกขั้นตอนข้างต้นโดยใช้คุณสมบัติมาโครของ Notepad ++ และไม่สามารถใช้งานได้ ฉันไม่แน่ใจว่าขั้นตอนใดจะล้มเหลว แต่ฉันไม่ได้วิเคราะห์สาเหตุ คุณอาจใช้ AutoHotKey เพื่อทำสิ่งนี้โดยอัตโนมัติหากคุณทำซ้ำ ๆ
^ *\d{5}
หรือใช้ตัวเลขจำนวนเท่าใดก็ได้สำหรับหมายเลขบรรทัด
ไม่ฉันไม่คิดว่าจะมี ที่ใกล้เคียงที่สุดคือปลั๊กอิน TextFx แต่นั่นคือการจัดเรียงอักขระตามความยาวบรรทัด ทางออกที่ดีที่สุดของคุณคือการโยนข้อความลงในสเปรดชีตและเรียงลำดับที่นั่น (ใช้คอลัมน์ที่คำนวณแยกต่างหากโดยใช้LEN()
ฟังก์ชัน)
คุณสามารถใช้SQL ใน N ++ในไฟล์ CSV! ตัวอย่างเช่นถ้าคุณมี:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
คุณสามารถดำเนินการคำสั่งselect * from data order by length(col1) desc
เพื่อเรียงจากมากไปน้อย "data" หมายถึงไฟล์ปัจจุบัน "col1" - ชื่อของคอลัมน์แรก (และสุดท้าย)
น่าเสียดายที่มีข้อผิดพลาดที่ไม่อนุญาตให้มีตัวคั่นทิ้งหลังจากบรรทัดในข้อความแบบคอลัมน์เดียว
หรือถ้าคุณมี linux และ nedit:
ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'