Linux: sort command

本文深入探讨了Linux sort命令的用法,包括基本语法、常用选项及其实际应用案例。通过示例演示如何根据不同需求对文本文件进行排序,包括数值排序、文本字段排序、忽略大小写等特性,旨在帮助用户高效地管理和组织数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

About sort

Sorts the lines in a text file.


sort command Syntax

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

sort command 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       Sort by random hash of keys.
--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=POS1[,POS2]           Start a key at POS1 (origin 1), end it at POS2 (default end of line). See POS syntax below.
-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.
-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           End lines with 0 byte, not newline.
--help                  Display a help message, and exit.
--version               Display version information, and exit.

POS is F[.C][OPTS], where F is the field number and C the character position in the field; both are origin 1. 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, which override global ordering options for that key. If no key is given, use the entire line as the key.

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.

With no FILE, or when FILE is a dash (“-“), read from standard input.

Also note that the locale specified by the environment affects sort order; set LC_ALL=C to get the traditional sort order that uses native byte values.


Examples

Sort command sorts the lines of a text file. Following are several practical examples on how to use the sort command based on the following sample text file that has employee information in the format:

employee_name:employee_id:department_name.

$ cat names.txt

Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

Sort a text file in ascending order

$ sort names.txt

Alex Jason:200:Sales
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Nisha Singh:500:Sales
Sanjay Gupta:400:Support

Sort a text file in descending order

$ sort -r names.txt

Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Madison Randy:300:Product Development
Emma Thomas:100:Marketing
Alex Jason:200:Sales

Sort a colon delimited text file on 2nd field (employee_id)

$ sort -t: -k 2 names.txt

Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

Sort a tab delimited text file on 3rd field (department_name) and suppress duplicates

$ sort -t: -u -k 3 names.txt

Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Alex Jason:200:Sales
Sanjay Gupta:400:Support

Sort the passwd file by the 3rd field (numeric userid)

$ sort -t: -k 3n /etc/passwd | more

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

Sort /etc/hosts file by ip-address

$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.100.101 dev-db.thegeekstuff.com dev-db
192.168.100.102 prod-db.thegeekstuff.com prod-db
192.168.101.20  dev-web.thegeekstuff.com dev-web
192.168.101.21  prod-web.thegeekstuff.com prod-web

Combine sort with other commands

ps –ef | sort : Sort the output of process list
ls -al | sort +4n : List the files in the ascending order of the file-size. i.e sorted by 5th filed and displaying smallest files first.
ls -al | sort +4nr : List the files in the descending order of the file-size. i.e sorted by 5th filed and displaying largest files first.


Reference

http://linux.101hacks.com/linux-commands/sort-command-examples/
http://www.computerhope.com/unix/usort.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值