पहले और फिर दूसरे कॉलम के आधार पर फाइल को छांटना


13

मैं दूसरे कॉलम के पहले तत्व (केवल पहला कॉलम तत्व समान होने पर) को छाँटकर दो कॉलम टैब-अलग टेक्स्ट फ़ाइल में हेरफेर कैसे कर सकता हूं?

उदाहरण के लिए:

इनपुट फाइल १

A   1-2
A   6-8
A   3-4
B   7-10
B   5-9

अपेक्षित आउटपुट: फ़ाइल 2

A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

जवाबों:


22

उपयोग sortके -kविकल्प एक ही बार में (एकाधिक) कॉलम से सॉर्ट करने:

$ sort -k1,1 -k2n input
A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

-k1,1पहले कॉलम के आधार पर सॉर्ट करें, फिर दूसरे कॉलम के अनुसार, -k2nजब पहला कॉलम बंधा हुआ था, तो आप अपना आउटपुट उस क्रम में प्राप्त करें, जैसा आप चाहते हैं: दूसरे कॉलम के पहले तत्व द्वारा क्रमबद्ध करना, केवल तभी जब पहला कॉलम तत्व समान हो।

संख्यात्मक रूप से छांटने पर यह केवल क्षेत्र की जांच करेगा जब तक कि यह एक संख्या होना बंद नहीं कर देता है, इसलिए यह आपको इसके पहले तत्व की तुलना देता है।

जब दो कुंजी एक ही तुलना करते हैं, तो sortएक अंतिम उपाय की तुलना में पूरी तरह से पूरी तरह से लाइनों की तुलना करते हैं। में उदाहरण के लिए A 1-10बनाम A 1-2, पहली कुंजी समान (हैं Aस्ट्रिंग), और दूसरी चाबी के साथ-साथ (दोनों संख्या के रूप में इलाज कर रहे हैं 1), इसलिए तो sortतुलना A 1-10बनाम A 1-2lexically और बाद के रूप में अधिक से अधिक है 2के बाद एक तरह 1। जीएनयू कार्यान्वयन के sortपास एक संस्करण सॉर्ट करने के लिए एक -Vविकल्प या Vकुंजी ध्वज होता है, जो कि एक शाब्दिक तुलना की तरह होता है सिवाय इसके कि तार के भीतर दशमलव अंकों के अनुक्रमों की तुलना संख्यात्मक रूप से की जाती है, इसलिए बाद में क्रमबद्ध होगा क्योंकि एक संख्या से अधिक है ।sort -k1,1 -k2VA 1-10A 1-2102


¹ तकनीकी रूप से, -k2लाइन का हिस्सा दूसरे क्षेत्र से शुरू होता है (गैर-रिक्त से रिक्त स्थान पर पहले संक्रमण के बाद) और पंक्ति के अंत में समाप्त होता है, लेकिन nध्वज के साथ , यह -k2,2nकेवल प्रमुख भाग के बराबर है माना जाता है कि एक संख्या का गठन होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.