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.