-b, --ignore-leading-blanks
忽略每行前面开始处的空格和tab字符
-c, --check
检查文件是否已经排序,如果输入文件排序不正确,就返回一个非零值。
-d, --dictionary-order
按字典顺序,即对英文字母、数字及空格字符排序
-f, --ignore-case
排序时,忽略大小写的区别,全部作为大写字母进行
-g, --general-numeric-sort
按常规数字顺序排序
--help
帮助信息
-i, --ignore-nonprinting
忽略不可打印的字符(即指非八进制040~176之间的ASCII字符)排序
-k n[,m] , --key=n[,m]
指定一个或几个字段作为排序关键字,字段位置从n开始,到m为止(包括n,不包括m)。如不指定m,则关键字为从n到行尾。字段和字符的位置从0开始,第一列为1。
-n
按算术大小排序
-ofile, --output=file
将排序结果保存成指定的文件,而非输出到屏幕
-m, --merge
合并几个已经排序的文件
-r, --reverse
反向排序
-s, --stable
关闭最后重排的动作,实现稳定排序
-t:, --field-separator=:
指定列分隔符,默认是tab
-u, --unique
对排序后认为相同的行只留其中一行
-z, --zero-terminated
结束行为0字符,而非新行(\n)字符
--version
显示版本信息
-M, --month-sort
将前3个字母(不含空格、忽略大小写)按照月份缩写进行排序,非月份缩写的行则排在最后,如JAN < FEB
-Ssize, --buffer-size=size
设置多大的缓存,默认1024K,可使用M指定
-T tempdir, --temporary-directory=dir
存放临时文件的目录
最有趣的应该是-t参数了,举个例子:
# more test.txt
time0 | userA | a | 1
time3 | userD | d | 3
time1 | userC | c | 4
time2 | userB | b | 2
如果我要按第一列来排序,后面的对应关系还不能错,就要用到-t参数了:sort的-t选项可以实现cut的-d功能,再利用+m -n参数可以实现cut的-f的功能,只是,sort的这个+m -n是从0开始计数的。+m -n是指从第m个字段开始,到第n个字段排序,其中包含第m个但不包含第n个。
比如:以下就定义 “|” 为一个字段。
# sort -t "|" +0 -1 test.txt
time0 | userA | a | 1
time1 | userC | c | 4
time2 | userB | b | 2
time3 | userD | d | 3
这个 +0 -1 就表示第一列。
那么要按第二列或者第三列排序呢?
# sort -t "|" +1 -2 test.txt
time0 | userA | a | 1
time2 | userB | b | 2
time1 | userC | c | 4
time3 | userD | d | 3
# sort -t "|" +2 -3 test.txt
time0 | userA | a | 1
time2 | userB | b | 2
time1 | userC | c | 4
time3 | userD | d | 3
# sort -t "|" +3 -4 test.txt
time0 | userA | a | 1
time2 | userB | b | 2
time3 | userD | d | 3
time1 | userC | c | 4
另一个例子:
192.168.19.11
192.168.19.12
192.168.19.8
192.168.19.9
192.168.21.11
192.168.21.12
192.168.21.9
192.168.21.10
192.168.21.5
192.168.19.10
sort -n -t "." +2 -3 +3 -4 sort.txt
192.168.19.8
192.168.19.9
192.168.19.10
192.168.19.11
192.168.19.12
192.168.21.5
192.168.21.9
192.168.21.10
192.168.21.11
192.168.21.12
-k的例子:按不同列排序
[root@test1 tmp]# more 1.txt
c 2 F
a 3 H
b 1 G
[root@test1 tmp]# sort -k1 1.txt
a 3 H
b 1 G
c 2 F
[root@test1 tmp]# sort -k2 1.txt
b 1 G
c 2 F
a 3 H
[root@test1 tmp]# sort -k3 1.txt
c 2 F
b 1 G
a 3 H