Terminal GuideTerminal Guide

sort Command Guide

The sort command sorts lines of text files. Learn how to organize data alphabetically, numerically, and by specific fields.

6 min readLast updated: 2024
Dai Aoki

Dai Aoki

CEO at init, Inc. / CTO at US & JP startups / Creator of WebTerm

Quick Reference

Basic

sort fileSort alphabetically
sort -r fileReverse order
sort -n fileNumeric sort

Options

-uUnique (remove dups)
-fIgnore case
-hHuman numeric (1K, 2M)

Fields

-k 2Sort by field 2
-t ":"Field delimiter
-k 2,2nNumeric field 2

Common

sort -u fileUnique sorted
sort -rn fileDescending numeric
sort -o file fileSort in place

Downloadable Image Preview

Failed to generate preview

Basic Usage

By default, sort arranges lines alphabetically.

bash
sort file.txt

Common Options

sort Options

-rReverse order (descending)
-nNumeric sort
-hHuman-readable numbers (1K, 2M)
-k NSort by field N
-t CHARUse CHAR as field delimiter
-uRemove duplicate lines
-fIgnore case
-o FILEWrite output to FILE

Sorting Order

bash
# Alphabetical (default)
sort names.txt

# Reverse alphabetical
sort -r names.txt

# Ignore case
sort -f names.txt

Numeric Sorting

bash
# Alphabetical (wrong for numbers)
echo -e "10\n2\n1\n20" | sort
# Output: 1, 10, 2, 20

# Numeric (correct)
echo -e "10\n2\n1\n20" | sort -n
# Output: 1, 2, 10, 20

# Human-readable sizes
du -h | sort -h
# Properly sorts 1K, 2M, 3G
Warning
Without -n, numbers are sorted alphabetically (1, 10, 2, 20). Always use -n for numeric data.

Sorting by Field

Use -k to sort by a specific column.

bash
# Sort by second field
sort -k2 data.txt

# Sort by third field numerically
sort -k3 -n data.txt

# Sort by second field, then by third
sort -k2,2 -k3,3n data.txt

Custom field delimiter

bash
# CSV file (comma-separated)
sort -t',' -k2 data.csv

# Colon-separated (like /etc/passwd)
sort -t':' -k3 -n /etc/passwd

Removing Duplicates

bash
# Remove duplicate lines
sort -u file.txt

# Same as
sort file.txt | uniq

Practical Examples

Sort processes by memory usage

bash
ps aux | sort -k4 -rn | head -10

Find largest files

bash
du -ah | sort -rh | head -10

Sort IP addresses

bash
sort -t'.' -k1,1n -k2,2n -k3,3n -k4,4n ips.txt

Sort log by timestamp

bash
# ISO format dates sort correctly alphabetically
sort access.log

Count occurrences (with uniq)

bash
# Most common words
cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -rn | head -10

Sort and save to same file

bash
sort -o file.txt file.txt

Check if file is sorted

bash
sort -c file.txt
# Returns exit code 0 if sorted, 1 if not

Random shuffle

bash
sort -R file.txt
# Or use shuf
shuf file.txt

Stable Sort

Use -s for stable sorting (preserves original order for equal elements).

bash
sort -s -k1,1 file.txt

Version Sorting

bash
# Sort version numbers correctly
echo -e "1.2\n1.10\n1.1\n2.0" | sort -V
# Output: 1.1, 1.2, 1.10, 2.0

Summary

sort is essential for organizing text data. Key takeaways:

  • Use sort -n for numeric sorting
  • Use sort -r for reverse order
  • Use sort -k N to sort by field N
  • Use sort -t to set field delimiter
  • Use sort -u to remove duplicates
  • Use sort -h for human-readable sizes

Related Articles