sort(排序),是常用的bash命令之一。其将指定的文本内容,以行为单位进行排序。默认的排序方法是从每行的第1个字符开始,以ASCII码的顺序来排序。当指定不同的参数时,可按指定的栏,依栏的内容对文件进行排序。
一、版本
不同平台的sort命令,其参数会有区别。以红旗DC Server 5.0为例,版本是:
引用
# sort –version
sort (coreutils) 5.2.1
sort (coreutils) 5.2.1
Sort按文件的行进行对比排序,如果没有指定栏,则对比大小。如果不指定文件或指定为“-”,则由标准输入获取信息。
二、常用参数
命令格式:
引用
sort [options] [files]
常见参数:
引用
-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
关闭最后重排的动作,实现稳定排序
-tc, –field-separator=c
指定列分隔符,默认是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
存放临时文件的目录
忽略每行前面开始处的空格和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
关闭最后重排的动作,实现稳定排序
-tc, –field-separator=c
指定列分隔符,默认是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
存放临时文件的目录
三、示例
sort的排序结果和LC_ALL、LC_COLLATE 或 LANG 环境变量有关,以En_US为例。
sort可直接对文件操作,但更多的时候,sort是配合其他命令,通过管道操作的。
引用
#wc -l * | sort -r
22985 总用量
22968 ez-update.log
17 text
0 test
0 ssh-YCedH13769
0 ssh-PrjCf13788
22985 总用量
22968 ez-update.log
17 text
0 test
0 ssh-YCedH13769
0 ssh-PrjCf13788
对文件的行数按降序排列显示
sort -fd wordlist | uniq -c
按字母顺序排序后,去除重复的单词,并显示每个单词使用的次数
sort -nk3,4 -t: /etc/passwd
按/etc/passwd中,用“:”号分割,并以3,4列(UID、GID)来进行排序
du | awk ' {if($1>n) print $0}'|sort -g
统计当前目录下文件和目录大小超过n字节的信息,并根据算术大小排序显示出来
(方便查找当前目录下占用空间最大的文件和目录,若仅需要目录或文件信息,可配合find操作)
※对比ls -lrSR命令的输出信息
引用
-l 使用较长格式列出信息
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-S 根据文件大小排序
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-S 根据文件大小排序
四、参考文件
原文来自:
http://www.oreillynet.com/linux/cmd/cmd.csp?path=s/sort
参考:
http://tech.ddvip.com/2007-06/118241140827929.html
http://www.linux-cn.com/html/linux/beginner/20070903/55460.html
[译]uniq用法解释
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/112495.html