2013-08-12 5 views
22

कृपया यह न सोचें कि यह "यूनिक्स में सॉर्टिंग अल्फान्यूमेरिक डेटा" प्रश्न का दोहराव है ... मैंने दूसरे उत्तरों को देखा, और सोचें कि मेरा मामला थोड़ा अलग है!यूनिक्स में फ़ाइल को अलग-अलग क्षेत्रों में वर्णानुक्रम और संख्यात्मक रूप से क्रमबद्ध करने के लिए कैसे करें?

मैं इस तरह डेटा है:

A 192 
D 112 
D 188 
C 091 
A 281 
B 919 

... और मैं पहले कॉलम 1 (वर्णानुक्रम) क्रमबद्ध करना चाहते हैं, और फिर स्तंभ 2 से (संख्यानुसार)। मैं उपयोग करने की कोशिश:

sort -n -k1,2 

... लेकिन यह मेरे लिए सही ढंग से पहले क्षेत्र के लिए हल कर दिया है, लेकिन फिर दूसरे क्षेत्र (1000,1002,1003,10,1 के लिए गलत छंटाई ... के बजाय 1 , 10,1000,1002,1003)।

क्या कोई सुझाव दे सकता है कि इन दो कॉलम को जिस तरह से मैं पसंद करूं?

+0

तरह -k4,4n -k1,1 ???? –

+0

मुझे यह उल्लेख करना चाहिए कि दोनों स्तंभों में उनकी स्ट्रिंग में 1 और 50 वर्णों के बीच हो सकता है, और प्रत्येक पंक्ति अलग है – jake9115

+0

'sort -k1 -nk3 फ़ाइल' काम करना चाहिए। – anubhava

उत्तर

28

इस तरह उपयोग करने का प्रयास: -

sort -k1,1 -k4,4n 
  • -n: क्रमबद्ध डेटा/दिए गए स्तंभ संख्या का उपयोग कर खेतों: कार्यक्रम तरह संख्यात्मक मूल्य
  • -k विकल्प चुनता के अनुसार बनाता है। उदाहरण के लिए, विकल्प -के 2 ने दूसरे
    डेटा के कॉलम का उपयोग करके प्रोग्राम सॉर्ट किया। विकल्प- 3,3n -k 4,4n प्रत्येक कॉलम को टाइप करता है। पहले
    यह तीसरे कॉलम और फिर चौथा कॉलम सॉर्ट करेगा।
+0

आदेश/उत्तर के लिए धन्यवाद! मैंने कोशिश की, और मैं देखता हूं कि आप इसके साथ कहां जा रहे हैं, लेकिन यह मेरे डेटा के लिए काम नहीं करता है, क्योंकि प्रत्येक कॉलम में मान निश्चित वर्ण की लंबाई नहीं हैं। मेरे उदाहरण में मैंने स्तंभ 1 के लिए वर्ण लंबाई 1 और कॉलम 2 के लिए 3 का उपयोग किया, लेकिन वास्तविकता में रेखा की लंबाई रेखा के आधार पर 1 और 50 के बीच है। क्या इस से निकाल पाने के लिए कोई तरीका है? – jake9115

+0

मैंने कॉलम 2 को पहले क्रमबद्ध करने के लिए कमांड को उलट दिया, फिर कॉलम 1: 'sort-k1,1 -k4,4n' और ऐसा लगता है। क्या आप कृपया बता सकते हैं कि आदेश कैसे काम करता है? मैं '-4,4n' – jake9115

+0

@ जेक 9115 से अपरिचित हूं: - दोनों के स्पष्टीकरण के साथ मेरा उत्तर अपडेट किया गया। उम्मीद है कि मदद करता है :) पी एस अगर यह वास्तव में आपकी मदद करता है तो इसे उत्तर के रूप में स्वीकार करना न भूलें;) –

6

यह काम करना चाहिए:

sort -t "," -k1,1 -k2n,2 file 
संबंधित मुद्दे

 संबंधित मुद्दे