SORT(1) User Commands SORT(1)

# [NAME](#NAME)

sort - sort lines of text files

# [SYNOPSIS](#SYNOPSIS)

**sort** \[*OPTION*]... \[*FILE*]...  
**sort** \[*OPTION*]... *--files0-from=F*

# [DESCRIPTION](#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**](#b,)

ignore leading blanks when finding sort keys in each line

[**-d, --dictionary-order**](#d,)

consider only blanks and alphanumeric characters

[**-f, --ignore-case**](#f,)

fold lower case to upper case characters

[**-g, --general-numeric-sort**](#g,)

compare according to general numerical value

[**-i, --ignore-nonprinting**](#i,)

consider only printable characters

[**-M, --month-sort**](#M,)

compare (unknown) &lt; 'JAN' &lt; ... &lt; 'DEC'

[**-h, --human-numeric-sort**](#h,)

compare human readable numbers (e.g., 2K 1G)

[**-n, --numeric-sort**](#n,)

compare according to string numerical value; see full documentation for supported strings

[**-R, --random-sort**](#R,)

shuffle, but group identical keys. See also [**shuf**(1)](/man/os/coreutils/shuf.1)

[**--random-source=FILE**](#random)

get random bytes from FILE

[**-r, --reverse**](#r,)

reverse the result of comparisons

[**--sort=WORD**](#sort=WORD)

sort according to WORD: general-numeric **-g**, human-numeric **-h**, month **-M**, numeric **-n**, random **-R**, version **-V**

[**-V, --version-sort**](#V,)

natural sort of (version) numbers within text

Other options:

[**--batch-size=NMERGE**](#batch)

merge at most NMERGE inputs at once; for more use temp files

[**-c, --check, --check=diagnose-first**](#c,)

check for sorted input; do not sort

[**-C, --check=quiet, --check=silent**](#C,)

like **-c**, but do not report first bad line

[**--compress-program=PROG**](#compress)

compress temporaries with PROG; decompress them with PROG **-d**

[**--debug**](#debug)

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

[**--files0-from=F**](#files0)

read input from the files specified by NUL-terminated names in file F; If F is -, read names from standard input

[**-k, --key=KEYDEF**](#k,)

sort via a key; KEYDEF gives location and type

[**-m, --merge**](#m,)

merge already sorted files; do not sort

[**-o, --output=FILE**](#o,)

write result to FILE instead of standard output

[**-s, --stable**](#s,)

stabilize sort by disabling last-resort comparison

[**-S, --buffer-size=SIZE**](#S,)

use SIZE for main memory buffer

[**-t, --field-separator=SEP**](#t,)

use SEP instead of non-blank to blank transition

[**-T, --temporary-directory=DIR**](#T,)

use DIR for temporaries, not $TMPDIR or */tmp*; multiple options specify multiple directories

[**--parallel=N**](#parallel=N)

change the number of sorts run concurrently to N

[**-u, --unique**](#u,)

output only the first of lines with equal keys; with **-c**, check for strict ordering

[**-z, --zero-terminated**](#z,)

line delimiter is NUL, not newline

[**--help**](#help)

display this help and exit

[**--version**](#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](#AUTHOR)

Written by Mike Haertel and Paul Eggert.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to: &lt;bug-coreutils@gnu.org&gt;.  
Report any translation bugs to: &lt;https://translationproject.org/team/&gt;.  
GNU coreutils home page: &lt;https://www.gnu.org/software/coreutils/&gt;  
General help using GNU software: &lt;https://www.gnu.org/gethelp/&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;https://gnu.org/licenses/gpl.html&gt;.  
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

# [SEE ALSO](#SEE_ALSO)

[**shuf**(1)](/man/os/coreutils/shuf.1), [**uniq**(1)](/man/os/coreutils/uniq.1)

Full documentation &lt;https://www.gnu.org/software/coreutils/sort&gt;  
or available locally via: info '(coreutils) sort invocation'

October 2026 GNU coreutils 9.12

---

Document: sort(1) from coreutils 9.12-r7 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/coreutils.git
