सॉर्ट करें (यूनिक्स)

From Vigyanwiki
sort
Original author(s)Ken Thompson (AT&T Bell Laboratories)
Developer(s)Various open-source and commercial developers
Initial releaseNovember 3, 1971; 53 years ago (1971-11-03)
Written inC
Operating systemMultics, Unix, Unix-like, V, Plan 9, Inferno, MSX-DOS, IBM i
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+
Plan 9: MIT License

कम्प्यूटिंग में, सॉर्ट, यूनिक्स और यूनिक्स जैसे ऑपरेटिंग सिस्टम का एक स्टैन्डर्ड कमांड लाइन प्रोग्राम है, जो सॉर्टेड ऑर्डर में अपने कमांड-लाइन प्रोग्राम में सूचीबद्ध सभी कम्प्यूटर फाइल के इनपुट या कॉनकटेनेसन की पंक्तियों को प्रिंट करता है। इनपुट की प्रत्येक पंक्ति से निर्गत एक या अधिक 'सॉर्ट की' के आधार पर सॉर्टिंग की जाती है। डिफ़ॉल्ट रूप से, सभी इनपुट को 'सॉर्ट की' माना जाता है। ब्लैंक स्पेस, डिफ़ॉल्ट फ़ील्ड सेपरेटर है। कमांड कई कमांड-लाइन इंटरफ़ेस का समर्थन करता है जो कार्यान्वयन के अनुसार भिन्न हो सकते हैं। उदाहरण के लिए-rफ़्लैग सॉर्ट ऑर्डर को उलट देगा।

इतिहास

sortकमांड जो एक सामान्य सॉर्ट प्रक्रिया को चलाता है, पहली बार मॉलटिक्स में लागू किया गया था।[1] बाद में, यह वर्जन 1 यूनिक्स में दिखाई दिया। यह वर्जन मूल रूप से एटी एंड टी बेल लेबोरेटरीज में केन थॉम्पसन द्वारा लिखा गया था। वर्जन 4 तक यूनिक्स थॉम्पसन ने इसे यूनिक्स पाइपों का उपयोग करने के लिए संशोधित किया था, परंतु सॉर्ट ने आउटपुट फ़ाइल को नाम देने के लिए एक विकल्प बरकरार रखा क्योंकि इसका उपयोग किसी फ़ाइल को सॉर्ट करने के लिए किया गया था। वर्जन 5 यूनिक्स में, थॉम्पसन ने स्टैन्डर्ड इनपुट का प्रतिनिधित्व करने के लिए "-" का आविष्कार किया।[2]

sort का वर्जन, जीएनयू कोरुटिल्स बंडल, माइक हर्टेल और पॉल एगर्ट द्वारा लिखा गया था।[3] यह कार्यान्वयन मर्ज़ सॉर्ट एल्गोरिदम को नियोजित करता है।

इसी तरह के कमांड कई अन्य ऑपरेटिंग सिस्टम पर उपलब्ध हैं, उदाहरण के लिए sort कमांड एमएसएक्स-डॉस वर्जन 2 के लिए एएससीआईआई कॉर्पोरेसन के एमएसएक्स-डॉस 2 टूल्स का भाग है।[4]

sort कमांड को आईबीएम आइ ऑपरेटिंग सिस्टम में भी पोर्ट किया गया है।[5]

सिन्टैक्स

sort [OPTION]... [FILE]...

जब FILE नहीं होता है या FILE को - दिया जाता है, तो यह कमांड मानक इनपुट से रीड करता है।

पैरामीटर

नाम विवरण यूनिक्स प्लान 9 इन्फर्नो फ्रीबीएसडी लिनक्स एमएसएक्स-डॉस आईबीएम आई
-बी,
इग्नोर लीडिंग ब्लैंक
लीडिंग ब्लैंक स्पेस को इग्नोर करना। Yes Yes No Yes Yes No Yes
-सी जांचें कि इनपुट फ़ाइल सॉर्टिड है। No Yes No Yes Yes No Yes
-सी -सी के समान, परंतु फर्स्ट बैड लाइन को रिपोर्ट नही करता है। No No No Yes Yes No No
-डी,,
--ड़िक्शनरी-ऑर्डर
केवल ब्लैंक स्पेस और अक्षरांकीय वर्णों पर विचार करता है। Yes Yes No Yes Yes No Yes
-एफ,
--इग्नोर-केस
फोल्ड लोअर केस टू अपर केस कैरेक्टर्स। Yes Yes No Yes Yes No Yes
-जी,
--सामान्य-संख्यात्मक-सॉर्ट,
--सॉर्ट=सामान्य-संख्यात्मक
सामान्य संख्यात्मक मान के अनुसार तुलना करता है. Yes Yes No Yes Yes No No
-एच,
--मानव-संख्यात्मक-सॉर्ट,
--सॉर्ट=मानव-संख्यात्मक
मानव पठनीय संख्याओं की तुलना करें (जैसे, 2K 1G)। Yes No No Yes Yes No No
-i,
--इग्नोर-नॉनप्रिंटिंग
केवल मुद्रण योग्य वर्णों पर विचार करता है। Yes Yes No Yes Yes No Yes
-k,
--की =पीओएस1[,पीओएस2]
कुंजी को पीओएस1 (मूल 1) पर प्रारंभ करें, इसे पीओएस2 पर समाप्त करें (पंक्ति का डिफ़ॉल्ट अंत) No No No Yes Yes No No
-एम तुलना करता है <'JAN' < ... < 'DEC'। Yes No Yes Yes No Yes
-एम,
--माह-सॉर्ट,
--सॉर्ट=माह
तुलना करता है (अज्ञात) <'JAN' < ... < 'DEC'। Yes Yes No Yes Yes No No
-एन,
--न्यूमेरिक-सॉर्ट,
--सॉर्ट=न्यूमेरिक
स्ट्रिंग संख्यात्मक मान के अनुसार तुलना करता है। Yes Yes Yes Yes Yes No Yes
'-ओ आउटपुट मानक आउटपुट के अतिरिक्त आउटपुट फ़ाइल का उपयोग करता है। No Yes No Yes Yes No Yes
-आर,
--रिवर्स
तुलना के परिणाम को उलट देता है. Yes Yes Yes Yes Yes No Yes
-आर,
--रैंडम-सॉर्ट,
--सॉर्ट=रैंडम
परिवर्तन करता है, परंतु समान की को समूहित करता है। यह भी देखें: शफ़ Yes No No Yes Yes No No
-एस अंतिम उपाय तुलना को अक्षम करके सॉर्ट को स्थिर करता है। No No No Yes Yes No No
-एस साइज़,
--बफर-साइज़=साइज़
मेमोरी बफ़र के अधिकतम साइज़ के लिए साइज़ का उपयोग करें। No No No Yes No No No
-टीएक्स फ़ील्ड को अलग करने वाला 'टैब कैरेक्टर' x है। No Yes No No Yes No Yes
-t char,
--फ़ील्ड-सेपरेटर=char
गैर-रिक्त से रिक्त परिवर्तन के अतिरिक्त char का उपयोग करता है। No No No Yes Yes No No
-T dir,
--अस्थायी-निर्देशिका=dir
अस्थायी के लिए dir का उपयोग करता है। No Yes No Yes Yes No No
-यू,
--युनीक
समान की वाली पंक्तियों के प्रत्येक सेट में एक को छोड़कर सभी को दबाने के लिए युनीक वर्जन। No Yes No Yes Yes No Yes
-वी,
--वर्जन-सॉर्ट
पाठ के भीतर प्राकृतिक प्रकार की (वर्जन) संख्याएँ No No No Yes Yes No No
-डब्ल्यू जैसे -i, परंतु केवल टैब और रिक्त स्थान को इग्नोर करें। No Yes No No No No No
-z,
--शून्य-समाप्त
0 बाइट के साथ अंतिम पंक्तियाँ, नई पंक्ति नहीं No No No Yes Yes No No
--हेल्प हेल्प प्रदर्शित करें और बाहर निकलें No No No Yes Yes No No
--वर्जन आउटपुट वर्जन की जानकारी और निकास No No No Yes Yes No No
/आर तुलना के परिणाम को उलट देता है. No No No No No Yes No
/एस प्रत्येक पंक्ति के कितने अंकों का मूल्यांकन किया जाना चाहिए यह निर्धारित करने के लिए अंकों की संख्या निर्दिष्ट करें। No No No No No Yes No
/ए आस्की कोड के अनुसार सॉर्ट करें. No No No No No Yes No
/एच वाइल्ड कार्ड का उपयोग करते समय छिपी हुई फ़ाइलें सम्मिलित करें। No No No No No Yes No







उदाहरण

फ़ाइल ऐल्फबेटिकल सॉर्ट

$ cat phonebook
Smith, Brett     555-4321
Doe, John        555-1234
Doe, Jane        555-3214
Avery, Cory      555-4132
Fogarty, Suzie   555-2314
$ sort phonebook
Avery, Cory      555-4132
Doe, Jane        555-3214
Doe, John        555-1234
Fogarty, Suzie   555-2314
Smith, Brett     555-4321

संख्या के अनुसार सॉर्ट

"-n" विकल्प प्रोग्राम को संख्यात्मक मान के अनुसार सॉर्ट करता है। "du" कमांड प्राउड्यूस आउटपुट का उत्पादन करता है जो एक संख्या से प्रारंभ होता है, जो फ़ाइल का साइज़ (फ़ाइल साइज़) होता है, इसलिए इसका उत्पादन (आउटपुट) "sort" के लिए पाइप किया जा सकता है जिससे फ़ाइलों की एक सूची तैयार की जा सकती है जो (आरोही) फ़ाइल साइज़ के अनुसार सॉर्ट की गई है।

$ du /bin/* | sort -n
4       /bin/domainname
24      /bin/ls
102     /bin/sh
304     /bin/csh
find कमांड के साथ ls विकल्प 7वें फ़ील्ड में फ़ाइल साइज़ प्रिंट करता है, इसलिए इसकी एक सूची LaTeX फ़ाइल साइज़ के आधार पर सॉर्ट फ़ाइलें निम्न द्वारा उत्पादित की जाती हैं: 
$ find . -name "*.tex" -ls | sort -k 7n


कॉलम या फ़ील्ड

"-k" विकल्प का उपयोग किसी विशेष कॉलम पर सॉर्ट करने के लिए करता है। उदाहरण के लिए, दूसरे कॉलम पर सॉर्ट करने के लिए "-k 2" का उपयोग करें। पुराने वर्जनों में, "+1" विकल्प कार्यक्रम को दूसरे कॉलम पर सॉर्ट करने के लिए किया जाता था (+2 तीसरे कॉलम पर, आदि)।

$ cat zipcode
Adam  12345
Bob   34567
Joe   56789
Sam   45678
Wendy 23456
$ sort -k 2n zipcode
Adam  12345
Wendy 23456
Bob   34567
Sam   45678
Joe   56789

मल्टीपल फ़ील्ड सॉर्ट

"-k m,n" विकल्प का उपयोग किसी ऐसे कीवर्ड पर सॉर्ट करने के लिए किया जाता है जो संभवतः कई फील्ड्स से मिलकर बनता है तथा कॉलम m से प्रारंभ होकर कॉलम n पर समाप्त होता है।

$ cat quota
fred 2000
bob 1000
an 1000
chad 1000
don 1500
eric 500
$ sort -k2,2n -k1,1 quota
eric 500
an 1000
bob 1000
chad 1000
don 1500
fred 2000

यहां पहला सॉर्ट कॉलम 2 का उपयोग करके किया जाता है। -k2,2n कॉलम 2 से आरंभ और समाप्त होने वाली की को सॉर्ट करना और संख्यात्मक रूप से सॉर्ट करना निर्दिष्ट करता है। यदि -k2 इसके अतिरिक्त उपयोग किया जाता है, सॉर्ट कुंजी कॉलम 2 से प्रारंभ होगी और पंक्ति के अंत तक विस्तारित होगी। -k1,1 डिफ़ॉल्ट रूप से वर्णानुक्रम में सॉर्ट करते हुए, कॉलम 1 में मान का उपयोग करके ब्रेक रीलैशन का निर्देश देता है। ध्यान दें कि बॉब और चाड का वर्ग समान है और अंतिम आउटपुट में वर्णानुक्रमिक रूप से सॉर्ट हैं।

पाइप डीलिमिटेड फाइल सॉर्ट

$ sort -k2,2,-k1,1 -t'|' zipcode
Adam|12345
Wendy|23456
Sam|45678
Joe|56789
Bob|34567


टैब डीलिमिटेड फाइल सॉर्ट

टैब से अलग किए गए मानों के साथ किसी फ़ाइल को सॉर्ट करने के लिए कॉलम सीमांकक के रूप में एक टैब वर्ण निर्दिष्ट करने की आवश्यकता होती है। यह चित्रण शेल के डॉलर-उद्धरण संकेतन का उपयोग करता है[6][7]

टैब को C में एस्केप अनुक्रम के रूप में निर्दिष्ट करने के लिए।

$ sort -k2,2 -t $'\t' phonebook 
Doe, John	555-1234
Fogarty, Suzie	555-2314
Doe, Jane	555-3214
Avery, Cory	555-4132
Smith, Brett	555-4321


रीवर्स सॉर्ट करें

-r विकल्प सॉर्ट के क्रम को उलट देता है:

$ sort -rk 2n zipcode
Joe   56789
Sam   45678
Bob   34567
Wendy 23456
Adam  12345


रैंडम सॉर्ट

जीएनयू वर्जन में "sort" कमांड का एक "-R" या "--random-sort" विकल्प होता है जो हैशिंग पर आधारित होता है; परंतु यह पूर्ण रूप से रैंडम शफल नहीं प्रदान करता है, क्योंकि यह समानता वाली पंक्तियों को साथ में सॉर्ट करता है। यद्यपि, यूनिक्स उपयोगिता "shuf" द्वारा रियल रैंडम शफल प्रदान किया जाता है।

वर्जन के अनुसार सॉर्ट

जीएनयू वर्जन में "sort" कमांड का एक "-V" या "--version-sort" विकल्प होता है जो वर्जन नंबरों के लिए नेचुरल सॉर्ट करता है। यह टेक्स्ट से नंबरों को भागों में विभाजित करता है जिसमें लेटर्स के ब्लॉक और डिजिट्स के ब्लॉक होते हैं। अक्षरों के ब्लॉक की तुलना अल्फ़ा-नूमेरिक रूप से की जाती है, और अंकों के ब्लॉक की तुलना संख्यात्मक रूप से की जाती है। सबसे बाईं ओर के अंक जो भिन्न होते हैं वे परिणाम निर्धारित करते हैं। ब्लॉक की तुलना बाएं से दाएं की जाती है और उस लूप में पहला नॉन-ईक्वल ब्लॉक तय करता है कि कौन सा टेक्स्ट बड़ा है। यह आईपी अड्रेस, डेबियन पैकेज वर्ज़न स्ट्रिंग्स और इसी तरह के प्रोग्रामों के लिए कार्य करता है जहां वेरीअबल लेंथ की संख्याएं स्ट्रिंग्स में एम्बेडेड होती हैं।

यह भी देखें

  • संकलन
  • युनीक कमांड की सूची
  • यूनिक
  • शुफ़

संदर्भ

  1. "मल्टिक्स कमांड". www.multicians.org.
  2. McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
  3. "sort(1): sort lines of text files - Linux man page". linux.die.net.
  4. "MSX-DOS2 Tools User's Manual - MSX-DOS2 TOOLS ユーザーズマニュアル". April 1, 1993 – via Internet Archive.
  5. IBM. "IBM System i Version 7.2 Programming Qshell" (PDF) (in English). Retrieved 2020-09-05.
  6. "The GNU Bash Reference Manual, for Bash, Version 4.2: Section 3.1.2.4 ANSI-C Quoting". Free Software Foundation, Inc. 28 December 2010. Retrieved 1 February 2013. Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard.
  7. Fowler, Glenn S.; Korn, David G.; Vo, Kiem-Phong. "KornShell FAQ". Archived from the original on 2013-05-27. Retrieved 3 March 2015. The $'...' string literal syntax was added to ksh93 to solve the problem of entering special characters in scripts. It uses ANSI-C rules to translate the string between the '...'.


अग्रिम पठन


बाहरी संबंध