SORT(1plan9)
β¨ SORT(1plan9) β¨
okay bestie, gather round π this is the sort page from section 1 of the Plan 9 manual β sorting and merging files, the whole vibe. let's get into it.
π NAME π
sort β sort and/or merge files. that's it, that's the job, and it does it immaculately. π
π¦ SYNOPSIS π¦
sort [ -cmuMbdfinrwtx ] [ +pos1 [ -pos2 ] ... ] ... [ -k pos1 [ ,pos2
] ] ...
' [ -o output ] [ -T dir ... ] [ option ... ] [ file ... ]
πΈ DESCRIPTION πΈ
sort takes the lines of all the files you hand it, mushes them together, sorts them, and writes the result to the standard output. no files named? then it's sorting the standard input, no biggie. β¨
The default sort key is an entire line. The default ordering is lexicographic by runes. And the ordering is affected globally by the following options β you can have one or more of them hanging out at once:
-Mβ compare as months. The first three non-white space characters of the field are folded to upper case and compared so thatprecedesetc. Invalid fields compare low to (yes bestie, the original page literally ends that sentence right there β not me, I'm just the messenger π*)*-bβ ignore leading white space (spaces and tabs) in field comparisons. bye bye indentation π-dβ `Phone directory' order: only letters, accented letters, digits and white space are significant in comparisons. punctuation? not invited to this party π-fβ fold lower case letters onto upper case. Accented characters are folded to their non-accented upper case form. π-iβ ignore characters outside the ASCII range040-0176in non-numeric comparisons.-wβ like-i, but ignore only tabs and spaces. a little more chill about it π§-nβ an initial numeric string, consisting of optional white space, optional plus or minus sign, and zero or more digits with optional decimal point, is sorted by arithmetic value. actual number brain, not alphabet brain π’-gβ numbers, like-nbut with optional e-style exponents, are sorted by value. science notation girlies rise π-rβ reverse the sense of comparisons. flip it, reverse it π-txβTab character' separating fields is *x*. sox` is whatever character you're using as the field separator.
The notation +pos1 -pos2 restricts a sort key to a field beginning at pos1 and ending just before pos2. Pos1 and pos2 each have the form m.n, optionally followed by one or more of the flags Mbdfginr, where m tells a number of fields to skip from the beginning of the line and n tells a number of characters to skip further. If any flags are present they override all the global ordering options for this key. A missing .n means .0; a missing -pos2 means the end of the line. Under the -tx option, fields are strings separated by x; otherwise fields are non-empty strings separated by white space. White space before a field is part of the field, except under option -b. A b flag may be attached independently to pos1 and pos2. π
The notation -k pos1[,pos2] is how POSIX sort defines fields: pos1 and pos2 have the same format but different meanings. The value of m is origin 1 instead of origin 0 and a missing .n in pos2 is the end of the field.
When there are multiple sort keys, later keys are compared only after all earlier keys compare equal. Lines that otherwise compare equal are ordered with all bytes significant. no shortcuts, every byte gets a say π«Ά
These option arguments are also understood:
-cβ check that the single input file is sorted according to the ordering rules; give no output unless the file is out of sort. it's giving inspector energy π-mβ merge; assume the input files are already sorted. trust fall π€-uβ suppress all but one in each set of equal lines. Ignored bytes and bytes outside keys do not participate in this comparison. one of each, please π-oβ the next argument is the name of an output file to use instead of the standard output. This file may be the same as one of the inputs. spicy but legal π₯-Tdirβ put temporary files in dir rather than in/var/tmp.
π EXAMPLES π
- Print in alphabetical order all the unique spellings in a list of words where capitalized words differ from uncapitalized.
- Print the users file sorted by user name (the second colon-separated field).
- Print the first instance of each month in an already sorted file. Options
-umwith just one input file make the choice of a unique representative from a set of equal lines predictable.
grep -n '^' input | sort -t: +1f +0n | sed 's/[0-9]*://'
A stable sort: input lines that compare equal will come out in their original order. the way that this pipeline eats πβ¨
π FILES π
/var/tmp/sort.<pid>.<ordinal>
π SOURCE π
/src/cmd/sort.c
π§ SEE ALSO π§
uniq(1), look(1) β go say hi to the neighbors, they're iconic too πΈ
β DIAGNOSTICS β
sort comments and exits with non-null status for various trouble conditions and for disorder discovered under option -c. so if it's mad, it will say something and it will return a non-null status. no cap π
π BUGS π
An external null character can be confused with an internally generated end-of-field character. The result can make a sub-field not sort less than a longer field.
Some of the options, e.g. -i and -M, are hopelessly provincial. π
and that's the whole SORT(1plan9) page bestie β straight from the Plan 9 manual, section 1, page SORT(1plan9) at the bottom, source living at /src/cmd/sort.c. now go sort something and slay π
β¨π¦
π¦ where this page comes from
- debian bookworm: 9base 1:6-13 Β· Lucent
- debian trixie: 9base 1:6-14 Β· Lucent
- ubuntu jammy: 9base 1:6-11 Β· Lucent
- ubuntu noble: 9base 1:6-14 Β· Lucent
- ubuntu questing: 9base 1:6-15
- ubuntu resolute: 9base 1:6-15build1 Β· Lucent
- ubuntu stonking: 9base 1:6-15build1 Β· Lucent
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms