sort - Man Page
sort lines of text files
Examples (TL;DR)
- Sort a file in ascending order:
sort path/to/file
- Sort a file in descending order:
sort --reverse path/to/file
- Sort a file in case-insensitive way:
sort --ignore-case path/to/file
- Sort a file using numeric rather than alphabetic order:
sort --numeric-sort path/to/file
- Sort
/etc/passwd
by the 3rd field of each line numerically, using ":" as a field separator:sort --field-separator=: --key=3n /etc/passwd
- As above, but when items in the 3rd field are equal, sort by the 4th field by numbers with exponents:
sort -t : -k 3,3n -k 4,4g /etc/passwd
- Sort a file preserving only unique lines:
sort --unique path/to/file
- Sort a file, printing the output to the specified output file (can be used to sort a file in-place):
sort --output=path/to/file path/to/file
Synopsis
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
Description
Write sorted concatenation of all FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too. Ordering options:
- -b, --ignore-leading-blanks
ignore leading blanks
- -d, --dictionary-order
consider only blanks and alphanumeric characters
- -f, --ignore-case
fold lower case to upper case characters
- -g, --general-numeric-sort
compare according to general numerical value
- -i, --ignore-nonprinting
consider only printable characters
- -M, --month-sort
compare (unknown) < 'JAN' < ... < 'DEC'
- -h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
- -n, --numeric-sort
compare according to string numerical value; see manual for which strings are supported
- -R, --random-sort
shuffle, but group identical keys. See shuf(1)
- --random-source=FILE
get random bytes from FILE
- -r, --reverse
reverse the result of comparisons
- --sort=WORD
sort according to WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
- -V, --version-sort
natural sort of (version) numbers within text
Other options:
- --batch-size=NMERGE
merge at most NMERGE inputs at once; for more use temp files
- -c, --check, --check=diagnose-first
check for sorted input; do not sort
- -C, --check=quiet, --check=silent
like -c, but do not report first bad line
- --compress-program=PROG
compress temporaries with PROG; decompress them with PROG -d
- --debug
annotate the part of the line used to sort, and warn about questionable usage to stderr
- --files0-from=F
read input from the files specified by NUL-terminated names in file F; If F is - then read names from standard input
- -k, --key=KEYDEF
sort via a key; KEYDEF gives location and type
- -m, --merge
merge already sorted files; do not sort
- -o, --output=FILE
write result to FILE instead of standard output
- -s, --stable
stabilize sort by disabling last-resort comparison
- -S, --buffer-size=SIZE
use SIZE for main memory buffer
- -t, --field-separator=SEP
use SEP instead of non-blank to blank transition
- -T, --temporary-directory=DIR
use DIR for temporaries, not $TMPDIR or /tmp; multiple options specify multiple directories
- --parallel=N
change the number of sorts run concurrently to N
- -u, --unique
with -c, check for strict ordering; without -c, output only the first of an equal run
- -z, --zero-terminated
line delimiter is NUL, not newline
- --help
display this help and exit
- --version
output version information and exit
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and C a character position in the field; both are origin 1, and the stop position defaults to the line's end. If neither -t nor -b is in effect, characters in a field are counted from the beginning of the preceding whitespace. OPTS is one or more single-letter ordering options [bdfgiMhnRrV], which override global ordering options for that key. If no key is given, use the entire line as the key. Use --debug to diagnose incorrect key usage.
SIZE may be followed by the following multiplicative suffixes: % 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y, R, Q.
*** WARNING *** The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.
Author
Written by Mike Haertel and Paul Eggert.
Reporting Bugs
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Copyright
Copyright © 2024 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
See Also
Full documentation <https://www.gnu.org/software/coreutils/sort>
or available locally via: info '(coreutils) sort invocation'
Referenced By
bsearch(1), column(1), cracklib-format(8), ctags(1), datamash(1), decorate(1), dnssort(1), environ(7), fastrm(1), flowdumper(1), grep(1), heapsort.3bsd(3), look(1), makehistory(8), mlr(1), msort(1), prlimit(1), ps(1), qsort(3), radixsort.3bsd(3), remind(1), rpmsort(8), rs(1), rwhois_indexer(8), uniq(1), zipinfo(1).