[转帖]unix/liunx sort详解_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3001 | 回复: 0   主题: [转帖]unix/liunx sort详解        下一篇 
lusxingbao
注册用户
等级:少校
经验:1487
发帖:100
精华:0
注册:2012-11-12
状态:离线
发送短消息息给lusxingbao 加好友    发送短消息息给lusxingbao 发消息
发表于: IP:您无权察看 2013-3-14 16:03:56 | [全部帖] [楼主帖] 楼主

sort  :
功能说明:将文本文件内容加以排序。
语  法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]


补充说明:sort可针对文本文件的内容,以行为单位来排序。
参  数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-g 按照一般的数字排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-k 按某列排序,下边详讲。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-s 稳定排序,如果对输入顺序有要求的话,这个选项很重要。
-S 限制排序所用的内存。单位:M\G\T\B\E\Z\Y
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-u 去除重复行。
–help 显示帮助。
–version 显示版本信息。

sort默认的会以默认分隔符空格、制表符分隔字段,以第一个字段进行字典序的升序排列,没有指定输入文件则从标准输入获取数据。

sort选项没特别需要讲的,需要注意的就是-k。-k选项的具体语法格式如下:

[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]


这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。
如果不设定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(零),也是表示结尾到“域尾”。

在modifier部分还可以用到的选项:
可以用到b、d、f、i、n 或 r。
其中n和r你肯定已经很熟悉了。
b表示忽略本域的签到空白符号。
d表示对本域按照字典顺序排序(即,只考虑空白和字母)。
f表示对本域忽略大小写进行排序。
i表示忽略“不可打印字符”,只针对可打印字符进行排序。(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)

另外有时候在sort命令后会看到+1 -2这些符号,这是什么东东?请忽略它,现在手册也已经没有这个介绍了,是一种相当古老的用法。

实例:
以第一个关键列的第二个字母开始进行排序:

$ sort -k 1.2 file.txt


以关键列第一列的第二个字母进行排序,如果第二个字母相同则根据第三列以数值的标准进行降序排列。

$ sort -k 1.2,1.2 -k 3,3nr file.txt




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论