1. sort(1)
  2. sort(1)

NAME

sort - − 对文本文件行排序

描述

sort针对文本文件的内容,以行为单位来排序.过程如下:

首先sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次 按ASCII码值进行比较,最后将他们按升序输出.用户可以保存排序后的文件内容,或 把排序后的文件内容输出.

语法

sort [OPTION]... 源文件 [−o 输出文件]

选项

−b

忽略每一行前面的所有空白部分,从第一个可见字符开始比较.

−c

检查文件是否已经按照顺序排序,如果乱序,则输出第一个乱序的行的相关 信息,最后返回.

−C

会检查文件是否已排好序,如果乱序,不输出内容,仅返回11.

−d

在关键字中只考虑[a-zA-Z0-9]字符.

−f

排序时,将关键字中的小写字母折合成大写字母,忽略大小写字母.

−g

按照通常的数字顺序作比较.

−i

在关键字中只考虑[><40-><176]字符.

−k KEY

KEY格式为[FSTART[.CSTART]][MODIFIER][,[FEND[.CEND]][MODIFIER]], 表示按域排序.FSTART表示参加排序的域,而CSTART表示在FSTART域中从第 几个字符开始算“排序首字符”.CSTART可以省略的,表示从本域的开头部分 开始.同理,你可以设定FEND和CEND,省略FEND表示到行尾,省略CEND表示到 FEND域尾,即本域的最后一个字符.或者,如果你将CEND设定为0(零),也是 表示结尾到“域尾”.MODIFIER部分可以使用的字母是"b,d,f,i,n,r".其中 "n"表示对这个域进行排序时,要按照数值大小进行排序,"r"表示逆序排列 ,"b"表示忽略本域的空白符号,"d"表示对本域按照字典顺序排序(即只考 虑空白和字母),"f"表示对本域排序时忽略大小写,"I"表示忽略“不可打印 字符”,只针对可打印字符进行排序.参见范例.

−l

按照当前环境排序.

−m

合并已经排序好的文件,不排序.

−M

会以月份来排序,比如JAN小于FEB等.

−n

依照数值的大小排序.默认情况下2比10大,因为sort会将10当作1和0.

−o file

将排序后的结果存入文件file中.sort默认是把结果输出到标准输出,用重 定向输出到原文件会得到一个空白的文件."−o"选项可以将结果写入原文 件.

−r

sort默认的排序方式是升序,该选项可以切换为降序排序.

−s

通过屏蔽最后的再分类比较来稳定排序.

−t SEP

指定排序时所用的栏位分隔字符SEP.

−T DIRECTORY

使用DIRECTORY存放临时文件,而不是$TMPDIR或者/tmp

−z

以0字节结束行,而不是使用换行符.

−u

如果有"−c",则按严格的顺序进行检查;如果有"−m",则只输出相等顺序的 第一个,此时可以去除输入中的重复行.

−−help

显示帮助并退出.

−−version

输出版本信息并退出.

范例

下面这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示 水果数量,第三列表示水果价格.

$ cat fruit_name
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4

要以水果数量来排序,即以第二列来排序,则可以使用−t选项设定间隔符.指定了间 隔符之后,就可以用−k来指定列数了.

$ sort −n −k 2 −t ´:´ fruit_num
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
  1. March 2015
  2. sort(1)