sort 是将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,默认将他们按照升序输出
降序
在输出中去重
将排序结果输出到原文件
sort的默认输出是输出到标准输出,如果想把结果输出到文件,需要 sort file newfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o
以数值来排序
-t 后面跟 分隔符
-k 后面跟数字,表示用第几列排序
我们可以看到,当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,所以呢baidu排在了sohu前面.
其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
-u只识别用-k设定的域,发现相同,就将后续相同的行都删除
但是这时候,却一行也没有删除.原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的
可以用到b、d、f、i、n 或 r.
其中n和r你肯定已经很熟悉了.
b表示忽略本域的签到空白符号.
d表示对本域按照字典顺序排序(即,只考虑空白和字母).
f表示对本域忽略大小写进行排序.
i表示忽略"不可打印字符",只针对可打印字符进行排序.(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)
①.、用CRT软件连接一个Linux系统 .
Linux sort命令用于将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序.
sort命令的语法格式:sort[参数][文件]
Linux sort命令参数:
-b:忽略每行前面开始出的空格符号.
-c:检查文件是否已经按照顺序排序.
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符.
-f:排序时,将小写字母视为大写字母.
-m:将几个排序好的文件进行合并.
-M:将前面三个字母依照月份的缩写进行排序.
-n:依照数值的大小排序.
-u:意味着是唯一的,输出的结果是去完重了的.
-o:输出文件将排序后的结果存入指定的文件.
-r:以相反的顺序来排序.
-t:分隔字符指定排序时所用的栏位分隔字符.
无论是工作中使用还是应付各种面试,linux sort 都是必须要掌握的 linux 基本命令之一.尤其是 linux sort -k 命令,经常会被搞晕,索性好好研究一下 sort 命令
语法:
选项:
参数就不一一介绍了,直接上例子,首先先看下原始的排序数据
cat sort.log
①.、打印从哪列开始是乱序
sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回结果 1,表示文件不是已经排序好的文件
sort sort.log
这个语法格式可以被其中的逗号(",")分为两大部分,Start部分和End部分
Start和End部分都由三部分组成,其中的Modifier部分就是类似n和r的选项部分,可省略
FStart、Fend,表示使用的域,而CStart则表示在FStart域中从第几个字符开始算"排序首字符",同理,CEnd表示结尾的第几个字符是排序末尾字符,.CStart、.CEnd是可以省略的,分别表示从本域的开头部分开始、到本域的域尾结束,CEnd设定为0,也是表示结尾到域尾.口说无凭,上几个例子吧
从后往前,多个 -k,数据符合预期
从后往前,多个 -k ,第三列相同时,按照第一列降序排列,数据符合预期
更换成从前往后
当指定 FEend 后
除了"b"选项外,其余选项无论是指定在FStart还是FEnd中都是等价的,对于"b"选项,指定在FStart则作用于FStart,指定在FEnd则作用于FEnd
指定n选项按数值排序时, 由于"n"选项只能识别数字和负号"-",当排序时遇到无法识别字符时,将导致该key的排序立即结束,n选项绝对不会跨域进行比较
默认情况下,sort会进行一次 "最后的排序" ,按照默认规则对整行进行一次排序,这次排序称为"最后的排序"
sort整理完了,欢迎大牛指教
以上就是土嘎嘎小编为大家整理的linux命令数字排序相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!