sort命令详解高级语法

来源:互联网 发布:apache httppost 编辑:程序博客网 时间:2024/06/11 19:30

sort

相关命令:暂无相关命令
用法:sort [选项]... [文件]... 或:sort [选项]... --files0-from=F串联排序所有指定文件并将结果写到标准输出。长选项必须使用的参数对于短选项时也是必需使用的。排序选项:  -b, --ignore-leading-blanks   忽略前导的空白区域  -d, --dictionary-order        只考虑空白区域和字母字符  -f, --ignore-case             忽略字母大小写  -g, --general-numeric-sort    按照常规数值排序  -i, --ignore-nonprinting      只排序可打印字符  -M, --month-sort              比较 (未知) < "一月" < ... < "十二月"                                在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC'  -h, --human-numeric-sort    使用易读性数字(例如: 2K 1G)  -n, --numeric-sort            根据字符串数值比较  -R, --random-sort             根据随机hash 排序      --random-source=文件      从指定文件中获得随机字节  -r, --reverse                 逆序输出排序结果      --sort=WORD               按照WORD 指定的格式排序:                                        一般数字-g,高可读性-h,月份-M,数字-n,                                        随机-R,版本-V  -V, --version-sort            在文本内进行自然版本排序其他选项:      --batch-size=NMERGE       一次最多合并NMERGE 个输入;如果输入更多                                        则使用临时文件  -c, --check, --check=diagnose-first   检查输入是否已排序,若已有序则不进行操作  -C, --check=quiet, --check=silent     类似-c,但不报告第一个无序行      --compress-program=程序   使用指定程序压缩临时文件;使用该程序                                        的-d 参数解压缩文件      --debug                   为用于排序的行添加注释,并将有可能有问题的                                        用法输出到标准错误输出      --files0-from=文件        从指定文件读取以NUL 终止的名称,如果该文件被                                        指定为"-"则从标准输入读文件名  -k, --key=位置1[,位置2]       在位置1 开始一个key,在位置2 终止(默认为行尾)                                参看POS 语法。  -m, --merge                   合并已排序的文件,不再进行排序  -o, --output=文件             将结果写入到文件而非标准输出  -s, --stable                  禁用last-resort 比较以稳定比较算法  -S, --buffer-size=大小        指定主内存缓存大小  -t, --field-separator=分隔符  使用指定的分隔符代替非空格到空格的转换  -T, --temporary-directory=目录        使用指定目录而非$TMPDIR 或/tmp 作为                                        临时目录,可用多个选项指定多个目录      --parallel=N              将同时运行的排序数改变为N  -u, --unique          配合-c,严格校验排序;不配合-c,则只输出一次排序结果  -z, --zero-terminated 以0 字节而非新行作为行尾标志      --help            显示此帮助信息并退出      --version         显示版本信息并退出POS 是F[.C][OPTS],F 代表域编号,C 是域中字母的位置,F 和C 均从1开始计数如果没有有效的-t 或-b 选项存在,则从前导空格后开始计数字符。OPTS 是一个或多个由单个字母表示的顺序选项,以此覆盖此key 的全局顺序设置。如果没有指定key 则将其整个行。指定的大小可以使用以下单位之一:内存使用率% 1%,b 1、K 1024 (默认),M、G、T、P、E、Z、Y 等依此类推。如果不指定文件,或者文件为"-",则从标准输入读取数据。*** 警告 ***本地环境变量会影响排序结果。如果希望以字节的自然值获得最传统的排序结果,请设置LC_ALL=C。
[root@www ~]# cat /etc/passwd | sort                   #sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序。[root@www ~]# cat /etc/passwd | sort -t ':' -k 3       #/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何[root@www ~]# cat /etc/passwd | sort -t ':' -k 3n      #用数字排序,默认是以字符串来排序的[root@www ~]# cat /etc/passwd | sort -t ':' -k 3nr      #倒序排列,默认是升序排序[root@www ~]# ccat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r      #对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序[root@www ~]# cat /etc/passwd |  sort -t':' -k 7 -u      #查看/etc/passwd有多少个shell:对/etc/passwd的第七个域进行排序,然后去重


其中有些人对-K参数存有疑惑
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。(F指域field C指字符char )先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。

0 0
原创粉丝点击