Virgülle ayrılmış kelimelere göre sıralama


11

Normal komut: sort, satırları sütuna veya sanal sütuna ( \%cveya \%v) göre sıralayabilir , daha üst düzey mantıksal sütun sıralama anahtarı olarak kullanılabilir mi? Düzenli ifade kullanmak bu senaryo için biraz karmaşık görünüyor (sütun satırın sonunda mı?) Ve sıralama yardımcı programının ( sork -k) yaptığı işe benzer , ancak bu işlevle sıralama Windows'ta kullanılamıyor. Vim eklentisi de yardımcı olacaktır.

Örneğin, aşağıdaki 2 satırı virgülle ayrılmış son sütuna göre sıralamak istiyorum. Gerçek senaryomda çok daha fazla sütun ve dize deseni var. Sütun sınırlayıcıyı belirtmek onu çok basitleştirecektir.

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

Yanıtlar:


11

Vim'in sıralaması, atlamanıza {pattern}veya yalnızca ( rbayrakla birlikte) düşünmenize izin verir . Son virgülle ayrılmış sütun için normal bir ifadeyi formüle etmek kolaydır: Satırdaki son virgülün sonuna kadar dahil olmak üzere her şeyi atlayın:

:sort/.*,/

Başka bir sütun için, rbayrağı kullanır ve N (burada:) 2önceki sütunları atla \zs:

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

1
Son sütun, xbayrağı kullanarak onaltılık bir sayı olduğu için de yardımcı olabilir.
— jecxjo

Harika görünüyor. Son sütun özel bir durum olabilir. Orta sütunlar için basit bir gösterim var mı?
— Thomson

Bunun için bir şey bulabileceğini düşündüm, ama işte buradasın. Lütfen yanındaki düzenlenmiş onay işaretini tıklayarak (düzenlenmiş) cevabımı kabul edin. Teşekkürler!
— Ingo Karkat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.