sort — sort lines of text files


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

sort [OPTION...] −−files0−from=F


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

−R, −−random−sort

shuffle, but group identical keys. See shuf(1)


get random bytes from FILE

−r, −−reverse

reverse the result of comparisons


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:


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 temporaries with PROG; decompress them with PROG −d


annotate the part of the line used to sort, and warn about questionable usage to stderr


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


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


display this help and exit


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.

*** 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.


Written by Mike Haertel and Paul Eggert.


GNU coreutils online help: <>

Report any translation bugs to <>


shuf(1), uniq(1)

Full documentation <>

or available locally via: info '(coreutils) sort invocation'


Copyright © 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <>.

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.