मेरे पास इस तरह की एक फाइल है:
FirstName, FamilyName, Address, PhoneNumber
मैं इसे FamilyName द्वारा कैसे सॉर्ट कर सकता हूं?
मेरे पास इस तरह की एक फाइल है:
FirstName, FamilyName, Address, PhoneNumber
मैं इसे FamilyName द्वारा कैसे सॉर्ट कर सकता हूं?
जवाबों:
यदि यह यूनिक्स है:
sort -k 2 file.txt
आप -k
एक से अधिक स्तंभों पर सॉर्ट करने के लिए कई झंडे का उपयोग कर सकते हैं । उदाहरण के लिए, परिवार का नाम छाँटने के लिए फिर टाई ब्रेकर के रूप में पहला नाम:
sort -k 2,2 -k 1,1 file.txt
"मैन सॉर्ट" से प्रासंगिक विकल्प:
-k, --key = POS1 [, POS2]
POS1 पर एक कुंजी शुरू करें, इसे POS2 पर समाप्त करें (मूल 1)
POS F [.C] [OPTS] है, जहाँ F क्षेत्र संख्या और C क्षेत्र में वर्ण स्थिति है। ओपीटीएस एक या एक से अधिक अक्षरों का आदेश देने वाला विकल्प है, जो उस कुंजी के लिए वैश्विक ऑर्डरिंग विकल्पों को ओवरराइड करता है। यदि कोई कुंजी नहीं दी गई है, तो कुंजी के रूप में पूरी पंक्ति का उपयोग करें।
-t, --field-विभाजक = SEP
रिक्त स्थान को खाली करने के बजाय SEP का उपयोग करें
--field-separator=','
यदि आप "प्रथम नाम" जैसे "बिली बॉब" या जो भी ... के लिए मानों में डेटा प्रविष्टि ऑपरेटर प्रकार हो सकता है, तो उपयोग करने के लिए थोड़ा सावधान रहें, यदि आप इसके खिलाफ गार्ड नहीं करते हैं तो आसानी से आपके डेटा में स्थान प्राप्त कर सकते हैं, लेकिन अल्पविराम अपेक्षाकृत संभावना नहीं है।
-b
विकल्प का उपयोग करना चाहिए । ऐसा इसलिए है क्योंकि sort
वास्तव में यह विचार किया जा रहा है कि छाँटने के लिए स्ट्रिंग कॉमा के ठीक बाद शुरू होती है, न कि कॉलम के पहले अक्षर से। साथ ही, आपको LC_ALL=C
लोकेल के कारण किसी भी दुष्प्रभाव से बचने के लिए कमांड के साथ उपसर्ग करने की आवश्यकता हो सकती है , जो कि एक सरल ASCII फ़ाइल पर भी हो सकता है।
-b
( --ignore-leading-blanks
) भाग के लिए धन्यवाद । थोड़ा स्पष्ट करने के लिए: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
देता है a<SPACE><SPACE>b
पहले (पहले के बाद दूसरे स्तंभ शुरू होता है non-blank to blank transition
, और <SPACE><SPACE>b
इससे पहले कि है <SPACE>a
), लेकिन साथ -b
यह देता है aa<SPACE>a
के रूप में उम्मीद ( a
से पहले है b
)।
sort -nk2 file.txt
तदनुसार आप कॉलम नंबर बदल सकते हैं।