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

From Vigyanwiki
Revision as of 23:09, 7 August 2023 by alpha>KishanNayak
sort
Original author(s)Ken Thompson (AT&T Bell Laboratories)
Developer(s)Various open-source and commercial developers
Initial releaseNovember 3, 1971; 52 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]

वाक्यविन्यास

सॉर्ट करें [विकल्प]... [फ़ाइल]...

कोई साथ FILE, या जब FILE है -, कमांड मानक इनपुट से पढ़ता है।

पैरामीटर

Name Description Unix Plan 9 Inferno FreeBSD Linux MSX-DOS IBM i
-b,
--ignore-leading-blanks
Ignores leading blanks. Yes Yes No Yes Yes No Yes
-c Check that input file is sorted. No Yes No Yes Yes No Yes
-C Like -c, but does not report the first bad line. No No No Yes Yes No No
-d,
--dictionary-order
Considers only blanks and alphanumeric characters. Yes Yes No Yes Yes No Yes
-f,
--ignore-case
Fold lower case to upper case characters. Yes Yes No Yes Yes No Yes
-g,
--general-numeric-sort,
--sort=general-numeric
Compares according to general numerical value. Yes Yes No Yes Yes No No
-h,
--human-numeric-sort,
--sort=human-numeric
Compare human readable numbers (e.g., 2K 1G). Yes No No Yes Yes No No
-i,
--ignore-nonprinting
Considers only printable characters. Yes Yes No Yes Yes No Yes
-k,
--key=POS1[,POS2]
Start a key at POS1 (origin 1), end it at POS2 (default end of line) No No No Yes Yes No No
-m Merge only; input files are assumed to be presorted. No Yes No Yes Yes No Yes
-M,
--month-sort,
--sort=month
Compares (unknown) < 'JAN' < ... < 'DEC'. Yes Yes No Yes Yes No No
-n,
--numeric-sort,
--sort=numeric
Compares according to string numerical value. Yes Yes Yes Yes Yes No Yes
-o OUTPUT Uses OUTPUT file instead of standard output. No Yes No Yes Yes No Yes
-r,
--reverse
Reverses the result of comparisons. Yes Yes Yes Yes Yes No Yes
-R,
--random-sort,
--sort=random
Shuffles, but groups identical keys. See also: shuf Yes No No Yes Yes No No
-s Stabilizes sort by disabling last-resort comparison. No No No Yes Yes No No
-S size,
--buffer-size=size
Use size for the maximum size of the memory buffer. No No No Yes No No No
-tx 'Tab character' separating fields is x. No Yes No No Yes No Yes
-t char,
--field-separator=char
Uses char instead of non-blank to blank transition. No No No Yes Yes No No
-T dir,
--temporary-directory=dir
Uses dir for temporaries. No Yes No Yes Yes No No
-u,
--unique
Unique processing to suppress all but one in each set of lines having equal keys. No Yes No Yes Yes No Yes
-V,
--version-sort
Natural sort of (version) numbers within text No No No Yes Yes No No
-w Like -i, but ignore only tabs and spaces. No Yes No No No No No
-z,
--zero-terminated
End lines with 0 byte, not newline No No No Yes Yes No No
--help Display help and exit No No No Yes Yes No No
--version Output version information and exit No No No Yes Yes No No
/R Reverses the result of comparisons. No No No No No Yes No
/S Specify the number of digits to determine how many digits of each line should be judged. No No No No No Yes No
/A Sort by ASCII code. No No No No No Yes No
/H Include hidden files when using wild cards. 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 e> विकल्प प्रोग्राम को संख्यात्मक मान के अनुसार क्रमित करता है। 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 e> विकल्प सॉर्ट के क्रम को उलट देता है:

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


यादृच्छिक क्रमबद्ध करें

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

संस्करण के अनुसार क्रमबद्ध करें

जीएनयू कार्यान्वयन में एक है -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 '...'.


अग्रिम पठन


बाहरी संबंध