अल्पविराम से अलग किए गए शब्दों के आधार पर छाँटें


11

सामान्य कमांड: सॉर्ट कॉलम या वर्चुअल कॉलम ( \%cया \%v) के आधार पर लाइनों को सॉर्ट कर सकता है, क्या उच्च स्तर के लॉजिकल कॉलम को सॉर्टिंग कुंजी के रूप में इस्तेमाल किया जा सकता है? इस परिदृश्य के लिए नियमित अभिव्यक्ति का उपयोग करना थोड़ा जटिल लगता है (कॉलम पंक्ति के अंत में है?) और यह वैसा ही दिखता है जैसा कि सॉर्ट यूटिलिटी करती है ( sork -k), लेकिन इस कार्यक्षमता के साथ विंडोज पर अनुपलब्ध है। विम प्लग-इन से भी मदद मिलेगी।

उदाहरण के लिए, मैं कॉमा द्वारा अलग किए गए अंतिम कॉलम के अनुसार नीचे की 2 पंक्तियों को क्रमबद्ध करना चाहूंगा। मेरे वास्तविक परिदृश्य में बहुत अधिक कॉलम और स्ट्रिंग पैटर्न हैं। निर्दिष्ट करें कि कॉलम सीमांकक इसे बहुत सरल करेगा।

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

जवाबों:


11

विम का प्रकार आपको या तो स्किप करने की अनुमति देता है {pattern}, या केवल इसे ( rध्वज के साथ ) मानता है । अंतिम अल्पविराम-सीमांकित स्तंभ के लिए एक नियमित अभिव्यक्ति तैयार करना आसान है: एक पंक्ति में अंतिम अल्पविराम तक और सब कुछ छोड़ दें:

:sort/.*,/

किसी भी अन्य कॉलम के लिए, मैं rध्वज का उपयोग करूंगा , और N (यहां 2:) पिछले कॉलम को इसके माध्यम से छोड़ दूंगा \zs:

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

1
चूँकि अंतिम कॉलम xध्वज का उपयोग करते हुए एक हेक्स संख्या होता है, इसलिए यह सहायक भी हो सकता है।
जेकजो

यह बहुत अच्छा लग रहा है। अंतिम कॉलम एक विशेष मामला हो सकता है। मध्य स्तंभों के लिए कोई सरल प्रतिनिधित्व?
थॉमसन

मुझे लगा कि आप उसके लिए कुछ करने में सक्षम हैं, लेकिन यहां आप हैं। इसके आगे उल्लिखित चेकमार्क पर क्लिक करके कृपया मेरे (संपादित) उत्तर को स्वीकार करें। धन्यवाद!
इंगो करकट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.