เรียงตามคำที่คั่นด้วยเครื่องหมายจุลภาค


11

คำสั่งปกติ: การเรียงลำดับสามารถเรียงลำดับบรรทัดตามคอลัมน์หรือคอลัมน์เสมือน ( \%cหรือ\%v), สามารถใช้คอลัมน์ตรรกะระดับสูงกว่าเป็นคีย์การเรียงลำดับได้หรือไม่ การใช้นิพจน์ทั่วไปนั้นมีความซับซ้อนเล็กน้อยสำหรับสถานการณ์นี้ (คอลัมน์อยู่ใกล้กับจุดสิ้นสุดของบรรทัด) และดูเหมือนว่ายูทิลิตีการเรียงลำดับทำอะไร ( sork -k) แต่การเรียงลำดับด้วยฟังก์ชันนี้ไม่สามารถใช้งานได้บน Windows ปลั๊กอินที่เป็นกลุ่มจะช่วยได้เช่นกัน

ตัวอย่างเช่นฉันต้องการเรียงลำดับ 2 บรรทัดด้านล่างตามคอลัมน์สุดท้ายคั่นด้วยเครื่องหมายจุลภาค สถานการณ์จริงของฉันมีคอลัมน์และรูปแบบสตริงมากขึ้น ระบุตัวคั่นคอลัมน์จะทำให้มันง่ายขึ้นมาก

xxx,yyy,zzz,0x123
zzxz,xxxx,yyyy,0x121

คำตอบ:


11

การเรียงลำดับของ Vim อนุญาตให้คุณข้าม{pattern}หรือพิจารณาเฉพาะ (ด้วยrแฟล็ก) นิพจน์ปกติสำหรับคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคล่าสุดนั้นง่ายต่อการกำหนด: ข้ามทุกอย่างจนกระทั่งและรวมถึงเครื่องหมายจุลภาคสุดท้ายในบรรทัด:

:sort/.*,/

สำหรับคอลัมน์อื่น ๆ ฉันจะใช้rแฟล็กและข้าม N (ที่นี่2:) คอลัมน์ก่อนหน้าผ่าน\zs:

:sort/\([^,]*,\)\{2}\zs[^,]*/

1
เนื่องจากคอลัมน์สุดท้ายเป็นเลขฐานสิบหกที่ใช้xแฟล็กอาจเป็นประโยชน์เช่นกัน
jecxjo

มันดูดีมาก คอลัมน์สุดท้ายอาจเป็นกรณีพิเศษ มีตัวแทนง่าย ๆ สำหรับคอลัมน์กลางหรือไม่
Thomson

ฉันคิดว่าคุณสามารถหาอะไรซักอย่างมาได้ แต่ที่นี่คุณอยู่ โปรดยอมรับคำตอบของฉัน (แก้ไข) โดยคลิกที่เครื่องหมายถูกที่อยู่ถัดจากมัน ขอบคุณ!
Ingo Karkat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.