---
name: "sort"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/sort"
---

# sort(1)

sort lines of text files

## NAME

sort - sort lines of text files

## 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 when finding sort keys in each line

- **-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 full documentation for supported strings

- **-R, --random-sort**

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

- **--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 standard error

- **--files0-from=F**

  read input from the files specified by NUL-terminated names in file F; If F is -, 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**

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

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

Report bugs to: \<bug-coreutils@gnu.org\>.\
 Report any translation bugs to: \<https://translationproject.org/team/\>.\
 GNU coreutils home page: \<https://www.gnu.org/software/coreutils/\>\
 General help using GNU software: \<https://www.gnu.org/gethelp/\>

## COPYRIGHT

Copyright © 2026 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

[**shuf**(1)](/shuf/1.md), [**uniq**(1)](/uniq/1.md)

Full documentation \<https://www.gnu.org/software/coreutils/sort\>\
 or available locally via: info '(coreutils) sort invocation'
