Unix жүйесіндегі "sort" командасы: файлдарды сұрыптау, мәтір жолдарымен жұмыс, аргументтер, сұрыптау кілттері, опциялар. Бағдарламалық құрал туралы толық ақпарат.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Стандартты UNIX құралы
Standard UNIX utility
Есептеу техникасында, sort – Unix және Unix-қа ұқсас операциялық жүйелердің стандартты командалық жол бағдарламасы болып табылады, ол кіріс жолдарын немесе аргументтер тізімінде тізілген барлық файлдардың біріктірілген тізімін сұрыпталған тәртіппен шығарады. Сұрыптау әрбір кіріс жолынан алынған бір немесе бірнеше сұрыптау кілттерінің негізінде жүзеге асырылады. Дәстүрлі түрде, кірістің барлығы сұрыптау кілті ретінде қарастырылады. Бос орын – әдепкі өріс ажыратқышы. Бұл команда іске асылу жолына қарай өзгеретін бірнеше командалық жол опцияларын қолдайды. Мысалы, "r" белгісі сұрыптау ретін керітеді.
In computing, sort is a standard command line program of Unix and Unix like operating systems, that prints the lines of its input or concatenation of all files listed in its argument list in sorted order. Sorting is done based on one or more sort keys extracted from each line of input. By default, the entire input is taken as sort key. Blank space is the default field separator. The command supports a number of command line options that can vary by implementation. For instance the " r" flag will reverse the sort order.
Тарих
Жалпы сұрыптау мүмкіндігін шақыратын команда алғаш рет Multics жүйесінде іске асырылды. Кейін ол Version 1 Unix-те пайда болды. Бұл нұсқаны бастапқыда AT&T Bell Laboratories-те Кен Томпсон жазған. Version 4 нұсқасында Томпсон оны құбырларды пайдалану үшін өзгертті, бірақ сұрыптау командасы шығыс файлын атау опциясын сақтап қалды, себебі ол файлды сол орнында сұрыптау үшін қолданылды. Version 5 нұсқасында Томпсон стандарттық кірісті білдіру үшін " " символын ойлап тапты. GNU coreutils жинағына енген нұсқасын Майк Хейртл мен Пол Эггерт жазды. Бұл іске асыруда біріктіру сұрыптау алгоритмі қолданылады. Ұқсас командалар көптеген басқа операциялық жүйелерде де бар, мысалы, команда ASCII-дің MSX DOS2 Tools құралының MSX DOS 2-ші нұсқасының бір бөлігі болып табылады. Команда IBM i операциялық жүйесіне де көшірілді.
A command that invokes a general sort facility was first implemented within Multics. Later, it appeared in Version 1 Unix. This version was originally written by Ken Thompson at AT&T Bell Laboratories. By Version 4 Thompson had modified it to use pipes, but sort retained an option to name the output file because it was used to sort a file in place. In Version 5, Thompson invented " " to represent standard input. The version of bundled in GNU coreutils was written by Mike Haertel and Paul Eggert. This implementation employs the merge sort algorithm. Similar commands are available on many other operating systems, for example a command is part of ASCII's MSX DOS2 Tools for MSX DOS version 2. The command has also been ported to the IBM i operating system.
Синтаксисі
sort [OPTION] [FILE]
sort [OPTION] [FILE]
Егер FILE көрсетілмесе немесе FILE бос болса, команда стандарттық кірістен оқиды.
With no FILE, or when FILE is , the command reads from standard input.
Параметрлері
Атауы Сипаттама Unix Plan 9 Inferno FreeBSD Linux MSX DOS IBM i b, алдыңғы бос орындарды елемеу Алдыңғы бос орындарды елемеу. ✔ ✔ ✔ ✔ c Кіріс файлының сұрыпталғандығын тексеріңіз. ✔ ✔ ✔ ✔ C c сияқты, бірақ бірінші қате жолды хабарламайды. ✔ ✔ d, сөздік реті Тек бос орындар мен әріптік-цифрлық таңбаларды қарастырады. ✔ ✔ ✔ ✔ f, үлкен әріптерді елемеу Кіші әріптерді үлкен әріптерге айналдырады. ✔ ✔ ✔ ✔ g, жалпы сандық сұрыптау, sort=general numeric Жалпы сандық мән бойынша салыстырады. ✔ ✔ ✔ h, адам сандық сұрыптау, sort=human numeric Адам оқи алатын сандарды (мысалы, 2K 1G) салыстырады. ✔ ✔ ✔ i, баспаға шығарылмайтын таңбаларды елемеу Тек баспаға шығарылатын таңбаларды ғана қарастырады. ✔ ✔ ✔ ✔ k, key=POS1[,POS2] Кілт POS1 (бастапқы нүкте 1) орнынан басталып, POS2 орнында аяқталады (жолдың соңы, әдепкі бойынша). ✔ ✔ m Тек біріктіру; кіріс файлдары алдын ала сұрыпталған деп есептеледі. ✔ ✔ ✔ ✔ M, айлар бойынша сұрыптау, sort=month (белгісіз) < 'JAN' < ... < 'DEC' деп салыстырады. ✔ ✔ ✔ ✔ n, сандық сұрыптау, sort=numeric Сандық мәні бойынша салыстырады. ✔ ✔ ✔ ✔ ✔ o OUTPUT Стандартты шығыс орнына OUTPUT файлын пайдаланады. ✔ ✔ ✔ r, кері сұрыптау Салыстыру нәтижесін кері қайтарады. ✔ ✔ ✔ ✔ ✔ R, кездейсоқ сұрыптау, sort=random Қосарлады, бірақ бірдей кілттерді топтастырады. Сондай-ақ қараңыз: shuf ✔ ✔ ✔ s Сұрыптауды тұрақтандыру үшін соңғы салыстыруды өшіреді. ✔ ✔ S өлшемі, буфер өлшемі=өлшемі Есте сақтау буферінің максималды өлшемі үшін өлшемді пайдаланыңыз. ✔ tx 'Таб таңбасы' өрістерді бөлу үшін x таңбасын пайдаланады. ✔ ✔ ✔ t char, field separator=char Бос емес және бос орын арасындағы ауысу орнына char таңбасын пайдаланады. ✔ ✔ T dir, уақытша каталог=dir Уақытша файлдарды сақтау үшін dir каталогын пайдаланады. ✔ ✔ ✔ u, бірегей Тек әрбір бірдей кілттері бар жолдардың біреуін ғана қалдырады. ✔ ✔ ✔ V, нұсқа бойынша сұрыптау Мәтіндегі (нұсқа) нөмірлерді табиғи түрде сұрыптайды. ✔ ✔ w i сияқты, бірақ тек табу және бос орындарды елемеңіз. ✔ z, нөлмен аяқтау Жаңа жол емес, 0 байтпен жолдарды аяқтайды. ✔ ✔ көмек Көмекті көрсетіп, шығады. ✔ ✔ нұсқасы Нұсқа туралы ақпаратты көрсетіп, шығады. ✔ ✔ /R Салыстыру нәтижесін кері қайтарады. ✔ /S Әр жолдың қанша цифрын бағалау керектігін анықтау үшін цифрлар санын көрсетіңіз. ✔ /A ASCII коды бойынша сұрыптау. ✔ /H Wild card пайдаланғанда жасырын файлдарды қосады. ✔
Name Description Unix Plan 9 Inferno FreeBSD Linux MSX DOS IBM i b, ignore leading blanks Ignores leading blanks. ✔ ✔ ✔ ✔ ✔ c Check that input file is sorted. ✔ ✔ ✔ ✔ C Like c, but does not report the first bad line. ✔ ✔ d, dictionary order Considers only blanks and alphanumeric characters. ✔ ✔ ✔ ✔ ✔ f, ignore case Fold lower case to upper case characters. ✔ ✔ ✔ ✔ ✔ g, general numeric sort, sort=general numeric Compares according to general numerical value. ✔ ✔ ✔ ✔ h, human numeric sort, sort=human numeric Compare human readable numbers (e. g., 2K 1G). ✔ ✔ ✔ i, ignore nonprinting Considers only printable characters. ✔ ✔ ✔ ✔ ✔ k, key=POS1[,POS2] Start a key at POS1 (origin 1), end it at POS2 (default end of line) ✔ ✔ m Merge only; input files are assumed to be presorted. ✔ ✔ ✔ ✔ M, month sort, sort=month Compares (unknown) < 'JAN' < < 'DEC'. ✔ ✔ ✔ ✔ n, numeric sort, sort=numeric Compares according to string numerical value. ✔ ✔ ✔ ✔ ✔ ✔ o OUTPUT Uses OUTPUT file instead of standard output. ✔ ✔ ✔ ✔ r, reverse Reverses the result of comparisons. ✔ ✔ ✔ ✔ ✔ ✔ R, random sort, sort=random Shuffles, but groups identical keys. See also: shuf ✔ ✔ ✔ s Stabilizes sort by disabling last resort comparison. ✔ ✔ S size, buffer size=size Use size for the maximum size of the memory buffer. ✔ tx 'Tab character' separating fields is x. ✔ ✔ ✔ t char, field separator=char Uses char instead of non blank to blank transition. ✔ ✔ T dir, temporary directory=dir Uses dir for temporaries. ✔ ✔ ✔ u, unique Unique processing to suppress all but one in each set of lines having equal keys. ✔ ✔ ✔ ✔ V, version sort Natural sort of (version) numbers within text ✔ ✔ w Like i, but ignore only tabs and spaces. ✔ z, zero terminated End lines with 0 byte, not newline ✔ ✔ help Display help and exit ✔ ✔ version Output version information and exit ✔ ✔ /R Reverses the result of comparisons. ✔ /S Specify the number of digits to determine how many digits of each line should be judged. ✔ /A Sort by ASCII code. ✔ /H Include hidden files when using wild cards. ✔
Кездейсоқ сұрыптау
GNU-ның нұсқасы хэштелген кездейсоқ сұрыптау опциясын (R) ұсынады; бұл толыққанды кездейсоқ араластыру емес, себебі бірдей жолдарды біріктіріп қояды. Нағыз кездейсоқ сұрыптау үшін Unix құралы shuf қолданылады.
The GNU implementation has a R random sort option based on hashing; this is not a full random shuffle because it will sort identical lines together. A true random sort is provided by the Unix utility shuf.
Версия бойынша сұрыптау
GNU-ның іске асырылуында мәтін ішіндегі (нұсқа) сандарды табиғи түрде сұрыптауға мүмкіндік беретін V нұсқасы бар. Салыстырылатын екі мәтіндік тізбек әріптер және сандар блоктарына бөлінеді. Әріптер блогы әліпби бойынша салыстырылады, ал сандар блогы сандық түрде салыстырылады (яғни, басындағы нөлдер назарға алынбайды, сандардың көп болуы үлкенді білдіреді, әйтпесе ең сол жақтағы ерекшеленетін сандар нәтижені анықтайды). Блоктар солдан оңға салыстырылады және осы циклдағы алғашқы тең емес блок қай мәтін үлкен екенін шешеді. Бұл IP-адрестер, Debian пакеттерінің нұсқа тізбектері және ұзындығы өзгеріп отыратын сандар тізбектерге енгізілетін басқа да ұқсас міндеттер үшін жарамды.
The GNU implementation has a V version sort option which is a natural sort of (version) numbers within text. Two text strings that are to be compared are split into blocks of letters and blocks of digits. Blocks of letters are compared alpha numerically, and blocks of digits are compared numerically (i. e., skipping leading zeros, more digits means larger, otherwise the leftmost digits that differ determine the result). Blocks are compared left to right and the first non equal block in that loop decides which text is larger. This happens to work for IP addresses, Debian package version strings and similar tasks where numbers of variable length are embedded in strings.